SLIDE BÀI GIẢNG MÔN CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT - P6 CÁC THUẬT TOÁN SẮP XẾP

54 1.1K 0
SLIDE BÀI GIẢNG MÔN CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT - P6 CÁC THUẬT TOÁN SẮP XẾP

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

SLIDE BÀI GIẢNG MÔN CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT - P6 CÁC THUẬT TOÁN SẮP XẾP Đây là những silde bài giảng rất hay và dễ hiểu cho những bạn muốn nghiên cứu môn Cấu trúc dữ liệu và giải thuật. Bộ silde do tập thể giáo viên khoa CNTT- Đại học KHTN TPHCM biên soạn.

G i ả n g v i ê n : Văn Chí Nam – Nguyễn Thị Hồng Nhung – Đặng Nguyễn Đức Tiến Cấu trúc dữ liệu và giải thuật – HCMUS 2013 2 Radix Sort Selection Sort Merge Sort Quick Sort Heap Sort Bài toán sắp xếp Các thuật toán sắp xếp Cấu trúc dữ liệu và giải thuật – HCMUS 2013 3 Cấu trúc dữ liệu và giải thuật – HCMUS 2013 4  Bài toán sắp xếp: Sắp xếp là quá trình xử lý một danh sách các phần tử để đặt chúng theo một thứ tự thỏa yêu cầu cho trước  Ví dụ: danh sách trước khi sắp xếp: {1, 25, 6, 5, 2, 37, 40} Danh sách sau khi sắp xếp: {1, 2, 5, 6, 25, 37, 40}  Thông thường, sắp xếp giúp cho việc tìm kiếm được nhanh hơn. Cấu trúc dữ liệu và giải thuật – HCMUS 2013 5  Các phương pháp sắp xếp thông dụng:  Bubble Sort  Selection Sort  Insertion Sort  Quick Sort  Merge Sort  Heap Sort  Radix Sort Cần tìm hiểu các phương pháp sắp xếp và lựa chọn phương pháp phù hợp khi sử dụng. Selection Sort Cấu trúc dữ liệu và giải thuật – HCMUS 2013 6 Cấu trúc dữ liệu và giải thuật – HCMUS 2013 7  Mô phỏng cách sắp xếp tự nhiên nhất trong thực tế  Chọn phần tử nhỏ nhất và đưa về vị trí đúng là đầu dãy hiện hành.  Sau đó xem dãy hiện hành chỉ còn n-1 phần tử.  Lặp lại cho đến khi dãy hiện hành chỉ còn 1 phần tử. Cấu trúc dữ liệu và giải thuật – HCMUS 2013 8 Các bước của thuật toán:  Bước 1. Khởi gán i = 0.  Bước 2. Bước lặp:  2.1. Tìm a[min] nhỏ nhất trong dãy từ a[i] đến a[n-1]  2.2. Hoán vị a[min] và a[i]  Bước 3. So sánh i và n:  Nếu i < n thì tăng i thêm 1 và lặp lại bước 2.  Ngược lại: Dừng thuật toán. 9 15 2 8 7 3 6 9 17 2 15 8 7 3 6 9 17 2 3 8 7 15 6 9 17 2 3 6 7 15 8 9 17 2 3 6 7 15 8 9 17 2 3 6 7 8 15 9 17 2 3 6 7 8 9 15 17 2 3 6 7 8 9 15 17 i = 0 i = 1 i = 2 i = 3 i = 4 i = 5 i = 6 i = 7 Cấu trúc dữ liệu và giải thuật – HCMUS 2013 Cấu trúc dữ liệu và giải thuật – HCMUS 2013 10  Đánh giá giải thuật:  Số phép so sánh:  Tại lượt i bao giờ cũng cần (n-i-1) số lần so sánh  Không phụ thuộc vào tình trạng dãy số ban đầu Số phép so sánh =      1 0 2 )1( )1( n i nn in [...]... xếp: 2 3 6 7 8 9 15 Cấu trúc dữ liệu và giải thuật – HCMUS 2013 1 8 7 17 0 6 4 9 5 2 15 6 26  Đánh giá giải thuật:  Độ phức tập của giải thuật trong trường hợp xấu nhất là O(nlog2n) Cấu trúc dữ liệu và giải thuật – HCMUS 2013 27 Quick Sort Cấu trúc dữ liệu và giải thuật – HCMUS 2013 28  Phân chia dãy cần sắp xếp thành 2 phần S1 và S2 dựa vào phần tử mốc p: Cấu trúc dữ liệu và giải thuật – HCMUS 2013...  1)  2 i 0 n 1 Cấu trúc dữ liệu và giải thuật – HCMUS 2013 12 Heap Sort Cấu trúc dữ liệu và giải thuật – HCMUS 2013 13   Ý tưởng: khi tìm phần tử nhỏ nhất ở bước i, phương pháp Selection sort không tận dụng được các thông tin đã có nhờ vào các phép so sánh ở bước i-1  cần khắc phục nhược điểm này J Williams đã đề xuất phương pháp sắp xếp Heapsort Cấu trúc dữ liệu và giải thuật – HCMUS 2013 14... lại, dừng thuật toán Cấu trúc dữ liệu và giải thuật – HCMUS 2013 17  Mã giả : HeapSort(a: Array, n: int) { TaoHeap(a,n-1); r = n-1; while(r > 0) { HoanVi(a[0], a[r]); r = r - 1; HieuChinh(a,0,r); } } Cấu trúc dữ liệu và giải thuật – HCMUS 2013 18  Mã giả: TaoHeap (a: Array, r: int) { int l = r/2; while(l > 0) { HieuChinh(a,l,r); l = l - 1; } } Cấu trúc dữ liệu và giải thuật – HCMUS 2013 19  Mã giả:... + 1 Cấu trúc dữ liệu và giải thuật – HCMUS 2013 32  Trong khi còn phân hoạch:  Nếu giá trị tại firstUnknown nhỏ hơn giá trị pivot  Chuyển  Ngược lại  Chuyển  sang nhóm S1 sang nhóm S2 Kết thúc phân hoạch:  Đưa pivot về đúng vị trí (đổi chỗ giá trị lastS1 và first)  pivotIndex = lastS1 Cấu trúc dữ liệu và giải thuật – HCMUS 2013 33 Đưa về nhóm S1 Đưa về nhóm S2 Cấu trúc dữ liệu và giải thuật. .. 16 Cấu trúc dữ liệu và giải thuật – HCMUS 2013 35  Phân hoạch dãy số: 27, 38, 12, 39, 27, 16 Pivot S1 S2 27 12 38 Pivot S1 27 12 Pivot 39 12 S1 38 39 16 U.K 27 16 S2 16 39 Pivot 12 27 S2 S1 27 16 Unknown 27 27 38 S2 39 27 38 Cấu trúc dữ liệu và giải thuật – HCMUS 2013 36  Chạy tay thuật toán Quick Sort để sắp xếp mảng A trong 2 trường hợp tăng dần và giảm dần A = {2, 9, 5, 12, 20, 15, -8 , 10} Cấu trúc. .. tử mốc pivot Dựa vào giá trị pivot, phân hoạch dãy array thành 2 dãy mới S1 (first … pivotIndex-1) và S2 (pivotIndex+1…last) QuickSort (array, first, pivotIndex-1) QuickSort (array, pivotIndex + 1, last) } Cấu trúc dữ liệu và giải thuật – HCMUS 2013 30   Sử dụng thêm 2 chỉ số lastS1 và firstUnknown để phân hoạch Tiếp tục phân hoạch khi firstUnknown r là heap Cấu trúc dữ liệu và. .. 0 3 17 Cấu trúc dữ liệu và giải thuật – HCMUS 2013 0 1 8 7 4 9 5 2 15 6 24 7 3 2 17 7 3 1 8 6 4 17 15 7 6 3 1 8 6 4 9 5 2 15 6 7 Hoán vị phần tử đầu heap 2 7 9 5 3 2 17 3 7 2 0 0 3 0 1 8 6 6 4 9 5 2 15 2 6 7 17 7 Cấu trúc dữ liệu và giải thuật – HCMUS 2013 3 0 1 8 3 4 9 5 2 15 Hoán vị phần tử đầu heap 6 25 0 3 2 3 7 17 1 8 2 6 4 9 5 2 3 6 15 7 7 17 Hoán vị phần tử đầu heap 3 Mảng sau khi sắp xếp: 2... đầu heap 2 2 6 2 9 15 9 0 1 0 1 4 3 7 2 2 17 0 7 7 17 Cấu trúc dữ liệu và giải thuật – HCMUS 2013 3 0 1 3 9 4 6 5 Lan truyền hiệu chỉnh 2 8 6 22 15 7 2 17 7 3 3 9 4 17 2 3 5 8 6 3 3 2 6 4 5 17 2 15 Hoán vị phần tử đầu heap 7 6 2 17 5 6 6 15 7 6 8 2 9 3 0 1 4 1 7 Hoán vị phần tử đầu heap 7 7 6 0 8 1 9 2 0 3 7 Cấu trúc dữ liệu và giải thuật – HCMUS 2013 0 1 3 8 4 9 5 2 15 6 23 7 1 6 3 2 8 4 3 5 9 6 2 . 3 6 9 17 2 15 8 7 3 6 9 17 2 3 8 7 15 6 9 17 2 3 6 7 15 8 9 17 2 3 6 7 15 8 9 17 2 3 6 7 8 15 9 17 2 3 6 7 8 9 15 17 2 3 6 7 8 9 15 17 i = 0 i = 1 i = 2 i = 3 i = 4 i = 5 i = 6. } } 15 2 8 7 3 6 9 17 0 1 2 3 4 5 6 7 15 2 8 17 3 6 9 7 1 2 3 4 5 6 7 15 2 9 17 3 6 8 7 1 2 3 4 5 6 7 0 0 15 17 9 2 3 6 8 7 1 2 3 4 5 6 7 0 Lan truyền. heap. Cấu trúc dữ liệu và giải thuật – HCMUS 2013 16  Giai đoạn 1: Hiệu chỉnh dãy ban đầu thành heap (bắt đầu từ phần tử giữa của dãy)  Giai đoạn 2: sắp xếp dựa trên heap.  Bước 1: đưa

Ngày đăng: 16/08/2014, 15:51

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan