Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 20 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
20
Dung lượng
0,98 MB
Nội dung
Giảng viên: Văn Chí Nam – Nguyễn Thị Hồng Nhung – Đặng Nguyễn Đức Tiến Heap Sort Quick Sort Radix Sort Selection Sort Merge Sort Cấu trúc liệu giải thuật – HCMUS 2013 Bài toán xếp Các thuật toán xếp Cấu trúc liệu giải thuật – HCMUS 2013 Bài tốn xếp: Sắp xếp q trình xử lý danh sách phần tử để đặt chúng theo thứ tự thỏa yêu cầu cho trước Ví dụ: danh sách trước xếp: {1, 25, 6, 5, 2, 37, 40} Danh sách sau xếp: {1, 2, 5, 6, 25, 37, 40} Thông thường, xếp giúp cho việc tìm kiếm nhanh Cấu trúc liệu giải thuật – HCMUS 2013 Các phương phá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 phương pháp xếp lựa chọn phương pháp phù hợp sử dụng Cấu trúc liệu giải thuật – HCMUS 2013 Selection Sort Cấu trúc liệu giải thuật – HCMUS 2013 Mô cách xếp tự nhiên thực tế Chọn phần tử nhỏ đưa vị trí đầu dãy hành Sau xem dãy hành cịn n-1 phần tử Lặp lại dãy hành phần tử Cấu trúc liệu giải thuật – HCMUS 2013 Các bước thuật toán: Bước Khởi gán i = Bước Bước lặp: Tìm a[min] nhỏ dãy từ a[i] đến a[n-1] 2.2 Hoán vị a[min] a[i] 2.1 Bước So sánh i n: Nếu i < n tăng i thêm lặp lại bước Ngược lại: Dừng thuật toán Cấu trúc liệu giải thuật – HCMUS 2013 i=0 15 17 i=1 15 17 i=2 15 17 i=3 15 17 i=4 15 17 i=5 15 17 i=6 15 17 i=7 15 17 Cấu trúc liệu giải thuật – HCMUS 2013 10 Đánh giá giải thuật: Số phép so sánh: Tại lượt i 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 = n(n 1) (n i 1) i 0 n 1 Cấu trúc liệu giải thuật – HCMUS 2013 11 Số phép gán: Tốt nhất: n 1 4n i 0 Xấu nhất: n( n 7) (4 n i 1) i 0 n 1 Cấu trúc liệu giải thuật – HCMUS 2013 12 Heap Sort Cấu trúc liệu giải thuật – HCMUS 2013 13 Ý tưởng: tìm phần tử nhỏ bước i, phương pháp Selection sort không tận dụng thơng tin có nhờ vào phép so sánh bước i-1 cần khắc phục nhược điểm J Williams đề xuất phương pháp xếp Heapsort Cấu trúc liệu giải thuật – HCMUS 2013 14 Định nghĩa Heap: Giả sử xét trường hợp xếp tăng dần, Heap định nghĩa dãy phần tử al, al+1, … ar thỏa: với i thuộc [l,r] (chỉ số 0) ≥ a2i+1 ≥ a2i+2 {(ai,a2i+1), (ai,a2i+2) cặp phần tử liên đới} Cấu trúc liệu giải thuật – HCMUS 2013 15 Nếu al, al+1, … ar heap phần tử al (đầu heap) ln phần tử lớn Mọi dãy ai, ai+1, … ar với 2i + > r heap Cấu trúc liệu 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ử dãy) Giai đoạn 2: xếp dựa heap Bước 1: đưa phần tử lớn vị trí cuối dãy Bước 2: Loại bỏ phần tử lớn khỏi heap: r = r – Hiệu chỉnh lại phần lại dãy Bước 3: So sánh r l: Nếu r > l lặp lại bước Ngược lại, dừng thuật toán Cấu trúc liệu 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 liệu 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 liệu giải thuật – HCMUS 2013 19 Mã giả: HieuChinh(a: { i = l; j = while(j