SlideShare a Scribd company logo
1 of 63
SẮP XẾP Nguyễn Văn Linh Khoa Công nghệ thông tin & Truyền thông ĐẠI HỌC CẦN THƠ
Mục tiêu ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Tầm quan trọng của bài toán sắp xếp ,[object Object],[object Object],[object Object]
Sắp xếp trong và sắp xếp ngoài ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Tổ chức dữ liệu và ngôn ngữ cài đặt ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Tổ chức dữ liệu và ngôn ngữ cài đặt (tt) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Giải thuật sắp xếp chọn (Selection Sort) ,[object Object],[object Object],[object Object],[object Object]
Phương pháp chọn phần tử ,[object Object],[object Object],[object Object]
Ví dụ sắp xếp chọn 12 10 10 9 9 6 5 3 2 2 Kết quả 12 10 Bước 8 10 12 10 Bước 7 10 12 10 9 Bước 6 10 9 10 12 9 Bước 5 10 9 10 9 12 6 Bước 4 6 9 10 9 12 10 5 Bước 3 5 9 10 9 12 10 6 3 Bước 2 3 9 10 9 12 10 6 5 2 Bước 1  3 9 10 9 12 10 2 5 6 2 Bước 0  3 9 10 9 12 10 2 2 6 5 Ban đầu a[9] a[8] a[7] a[6] a[5] a[4] a[3] a[2] a[1] a[0] Khóa Bước
Lưu đồ  sắp xếp chọn Begin i = 0 i<=n-2 lowindex = i lowkey = a[i].key j<=n-1 i =  i+1 a[j].key<lowkey lowindex = j lowkey = a[j].key j = j+1 j = i+1 End swap(a[i],a[lowindex]) S Đ Đ Đ S S
Chương trình sắp xếp chọn ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Đánh giá sắp xếp chọn ,[object Object],[object Object],[object Object],[object Object],[object Object]
Giải thuật sắp xếp xen (Insertion Sort) ,[object Object],[object Object],[object Object],[object Object],[object Object]
Phương pháp xen ,[object Object],[object Object],[object Object]
Ví dụ sắp xếp xen 12 10 10 9 9 6 5 3 2 2 Bước 9 12 10 10 9 9 6 5 2 2 Bước 8 12 10 10 9 6 5 2 2 Bước 7 12 10 9 6 5 2 2 Bước 6 12 10 6 5 2 2 Bước 5 10 6 5 2 2 Bước 4 6 5 2 2 Bước 3 6 5 2 Bước 2 6 5 Bước 1 3 9 10 9 12 10 2 2 6 5 Ban đầu a[9] a[8] A[7] a[6] a[5] a[4] a[3] a[2] a[1] a[0] Khóa  Bước
Lưu đồ  sắp xếp xen Begin i = 1 i<=n-1 (j>0) and  (a[j].key < a[j-1].key) i =  i+1 j = i End swap(a[j],a[j-1]) j = j-1 S Đ Đ S
Chương trình sắp xếp xen  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Đánh giá sắp xếp xen ,[object Object],[object Object],[object Object]
Giải thuật sắp xếp “nổi bọt” (Bubble Sort) ,[object Object],[object Object],[object Object],[object Object]
Ví dụ sắp xếp “nổi bọt” 12 10 10 9 9 6 5 3 2 2 Kết quả 12 10 Bước 9 12 10 10 Bước 8 12 10 10 9 Bước 7 12 10 10 9 9 Bước 6 12 10 10 9 9 6 Bước 5 12 10 10 9 9 6 5 Bước 4 10 12 10 9 9 6 5 3 Bước 3 10 9 12 10 9 3 6 5 2 Bước 2 9 10 9 12 10 3 2 6 5 2 Bước 1 3 9 10 9 12 10 2 2 6 5 Ban đầu a[9] a[8] a[7] a[6] A[5] a[4] a[3] a[2] a[1] a[0] Khóa Bước
Lưu đồ  sắp xếp nổi bọt Begin i = 0 i<=n-2 i =  i+1 j = n-1 End swap(a[j],a[j-1]) S Đ Đ S a[j].key < a[j-1].key j>= i+1 Đ j =  j-1 S
Chương trình sắp xếp “nổi bọt” ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Begin i = 0 i<=n-2 i =  i+1 j = n-1 End swap(a[j],a[j-1]) S Đ Đ S a[j].key < a[j-1].key j>= i+1 Đ j =  j-1 S
Ý tưởng của QuickSort ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Phương pháp chọn chốt ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Phương pháp phân hoạch ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Ví dụ về phân hoạch Chốt p = 8 L=0 R=9 4 15 1 8 12 5 10 2 8 5 Khoá 9 8 7 6 5 4 3 2 1 0 Chỉ số
Ví dụ về phân hoạch L= 1 Chốt p = 8 R=9 4 15 1 8 12 5 10 2 8 5 Khoá 9 8 7 6 5 4 3 2 1 0 Chỉ số
Ví dụ về phân hoạch L= 1 Chốt p = 8 R=9 8 15 1 8 12 5 10 2 4 5 Khoá 9 8 7 6 5 4 3 2 1 0 Chỉ số
Ví dụ về phân hoạch L= 2 Chốt p = 8 R=9 8 15 1 8 12 5 10 2 4 5 Khoá 9 8 7 6 5 4 3 2 1 0 Chỉ số
Ví dụ về phân hoạch L= 3 Chốt p = 8 R=9 8 15 1 8 12 5 10 2 4 5 Khoá 9 8 7 6 5 4 3 2 1 0 Chỉ số
Ví dụ về phân hoạch L= 3 Chốt p = 8 R= 8 8 15 1 8 12 5 10 2 4 5 Khoá 9 8 7 6 5 4 3 2 1 0 Chỉ số
Ví dụ về phân hoạch L= 3 Chốt p = 8 R= 7 8 15 1 8 12 5 10 2 4 5 Khoá 9 8 7 6 5 4 3 2 1 0 Chỉ số
Ví dụ về phân hoạch L= 3 Chốt p = 8 R= 7 8 15 10 8 12 5 1 2 4 5 Khoá 9 8 7 6 5 4 3 2 1 0 Chỉ số
Ví dụ về phân hoạch L= 4 Chốt p = 8 R= 7 8 15 10 8 12 5 1 2 4 5 Khoá 9 8 7 6 5 4 3 2 1 0 Chỉ số
Ví dụ về phân hoạch L= 5 Chốt p = 8 R= 7 8 15 10 8 12 5 1 2 4 5 Khoá 9 8 7 6 5 4 3 2 1 0 Chỉ số
Ví dụ về phân hoạch L= 5 Chốt p = 8 R= 6 8 15 10 8 12 5 1 2 4 5 Khoá 9 8 7 6 5 4 3 2 1 0 Chỉ số
Ví dụ về phân hoạch L= 5 Chốt p = 8 R= 5 8 15 10 8 12 5 1 2 4 5 Khoá 9 8 7 6 5 4 3 2 1 0 Chỉ số
Ví dụ về phân hoạch L= 5 Chốt p = 8 R= 4 8 15 10 8 12 5 1 2 4 5 Khoá 9 8 7 6 5 4 3 2 1 0 Chỉ số 5 1 2 4 5 4 3 2 1 0 8 15 10 8 12 9 8 7 6 5
Giải thuật QuickSort ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Ví dụ về QuickSort Chốt p = 8 Chốt p = 5 5 1 2 4 5 8 15 10 8 12 4 15 1 8 12 5 10 2 8 5 Khoá 9 8 7 6 5 4 3 2 1 0 Chỉ số
Ví dụ về QuickSort Chốt p = 8 Chốt p = 5 Chốt p = 4 8 15 10 8 12 5 1 2 4 5 Khoá 9 8 7 6 5 4 3 2 1 0 Chỉ số 5 1 5 2 4 5 1 8 15 10 8 12 2 4 1 5 5
Ví dụ về QuickSort Chốt p = 8 Chốt p = 5 Chốt p = 4 Chốt p = 2 1 2 xong xong xong xong Chốt p = 12 8 15 10 8 12 5 1 2 4 5 Khoá 9 8 7 6 5 4 3 2 1 0 Chỉ số 5 1 5 2 4 5 1 8 15 10 8 12 2 4 4 2 1 5 5 2 1 4
Ví dụ về QuickSort Chốt p = 8 Chốt p = 5 Chốt p = 4 Chốt p = 2 1 2 xong xong xong xong Chốt p = 12 Chốt p = 10 xong xong Chốt p = 15 8 15 10 8 12 5 1 2 4 5 Khoá 9 8 7 6 5 4 3 2 1 0 Chỉ số 5 1 5 2 4 5 1 8 12 15 10 8 12 8 2 4 4 2 1 5 5 2 1 4 10 8 8 12 15 8 8 10
Ví dụ về QuickSort Chốt p = 8 Chốt p = 5 Chốt p = 4 Chốt p = 2 1 2 xong xong xong xong Chốt p = 12 Chốt p = 10 xong xong Chốt p = 15 xong xong 8 15 10 8 12 5 1 2 4 5 Khoá 9 8 7 6 5 4 3 2 1 0 Chỉ số 5 1 5 2 4 5 1 8 12 15 10 8 12 8 2 4 4 2 1 5 5 2 1 4 10 8 8 12 15 15 12 8 8 10 12 15
Lưu đồ  h àm FindPivot Begin k = i+1 firstkey = a[i].key (k<=j) and (a[k].key == firstkey k > j a[k].key>firstkey k = k+1 End Đ Đ Đ S S return -1 return i return k i, j S
Chương trình hàm FindPivot ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Begin k = i+1 firstkey = a[i].key (k<=j) and (a[k].key == firstkey k > j a[k].key>firstkey k = k+1 End Đ Đ Đ S S return -1 return i return k i, j S
Phân tích hàm FindPivot ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Lưu đồ  h àm Partition Begin L = i; R = j L <= R a[R].key >= pivot a[L].key < pivot L = L+1 End Đ Đ S S return L i, j, pivot S R = R-1 L < R Swap(a[L], a[R]) Đ S Đ
Hàm Partition ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Begin L = i; R = j L <= R a[R].key >= pivot a[L].key < pivot L = L+1 End Đ Đ S S return L i, j, pivot S R = R-1 L < R Swap(a[L], a[R]) Đ S Đ
Phân tích hàm Partition ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Hàm QuickSort ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Đánh giá QuickSort  (Trường hợp xấu nhất) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Giải PT này ta được T(n) =O(n 2 )
Đánh giá QuickSort  (Trường hợp t ốt n hất) ,[object Object],[object Object],Giải PT này ta được T(n) =O(nlogn)
HeapSort: Ðịnh nghĩa Heap ,[object Object],[object Object]
Ví dụ về heap 2 3 6 5 9 6 7 7 6 9
HeapSort : Ý tưởng giải thuật  ,[object Object],[object Object],[object Object],[object Object],[object Object]
Thiết kế hàm PushDown ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Lưu đồ  h àm PushDown Begin r = first r <= (last-1)/2 a[r].key > a[last].key last==2*r+1 r = last End Đ Đ S S first, last S swap(a[r],a[last]) a[r].key > a[2*r+1].key and a[2*r+1].key <= a[2*r+2].key swap(a[r], a[2*r+1]) r = 2*r+1 Đ S Đ S a[r].key > a[2*r+2].key and a[2*r+2].key < a[2*r+1].key swap(a[r], a[2*r+2]) r = 2*r+2 Đ r = last
Chương trình hàm Pushdown  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Phân tích hàm PushDown  ,[object Object],[object Object],[object Object],[object Object]
Chương trình hàm HeapSort  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Phân tích HeapSort ,[object Object],[object Object],[object Object],[object Object],[object Object]
HeapSort: Trình bày bằng bảng  T ạo Heap 3 9 10 9 12 10 2 2 6 5 Ban đầu a[9] a[8] a[7] a[6] A[5] a[4] a[3] a[2] a[1] a[0] Khóa Bước

More Related Content

What's hot

Chuong 2 Tim Kiem N Sap Xep
Chuong 2   Tim Kiem N Sap XepChuong 2   Tim Kiem N Sap Xep
Chuong 2 Tim Kiem N Sap Xep
quang
 
TÌM HIỂU VỀ MỘT SỐ THUẬT TOÁN SẮP XẾP ĐƠN GIẢN
TÌM HIỂU VỀ MỘT SỐ THUẬT TOÁN SẮP XẾP ĐƠN GIẢNTÌM HIỂU VỀ MỘT SỐ THUẬT TOÁN SẮP XẾP ĐƠN GIẢN
TÌM HIỂU VỀ MỘT SỐ THUẬT TOÁN SẮP XẾP ĐƠN GIẢN
Trần Nguyên
 
Bai3 timkiemsapxep
Bai3 timkiemsapxepBai3 timkiemsapxep
Bai3 timkiemsapxep
nhà tôi
 
Chuong 2 co so phan tich do phuc tap cua giai thuat - sinh vien 2
Chuong 2   co so phan tich do phuc tap cua giai thuat - sinh vien 2Chuong 2   co so phan tich do phuc tap cua giai thuat - sinh vien 2
Chuong 2 co so phan tich do phuc tap cua giai thuat - sinh vien 2
Hồ Lợi
 
Chap1 new (tran dai's conflicted copy 2013 04-02)
Chap1 new (tran dai's conflicted copy 2013 04-02)Chap1 new (tran dai's conflicted copy 2013 04-02)
Chap1 new (tran dai's conflicted copy 2013 04-02)
Loc Tran
 
Phân tích và thiết kế thuật toán độ phức tạp
Phân tích và thiết kế thuật toán   độ phức tạpPhân tích và thiết kế thuật toán   độ phức tạp
Phân tích và thiết kế thuật toán độ phức tạp
giangnguyn853776
 
Ctdl+va+gt chuong+1 4
Ctdl+va+gt chuong+1 4Ctdl+va+gt chuong+1 4
Ctdl+va+gt chuong+1 4
Do Ngoc Tuan
 

What's hot (19)

Chuong 2 Tim Kiem N Sap Xep
Chuong 2   Tim Kiem N Sap XepChuong 2   Tim Kiem N Sap Xep
Chuong 2 Tim Kiem N Sap Xep
 
Giáo trình Phân tích và thiết kế giải thuật - CHAP 7
Giáo trình Phân tích và thiết kế giải thuật - CHAP 7Giáo trình Phân tích và thiết kế giải thuật - CHAP 7
Giáo trình Phân tích và thiết kế giải thuật - CHAP 7
 
TÌM HIỂU VỀ MỘT SỐ THUẬT TOÁN SẮP XẾP ĐƠN GIẢN
TÌM HIỂU VỀ MỘT SỐ THUẬT TOÁN SẮP XẾP ĐƠN GIẢNTÌM HIỂU VỀ MỘT SỐ THUẬT TOÁN SẮP XẾP ĐƠN GIẢN
TÌM HIỂU VỀ MỘT SỐ THUẬT TOÁN SẮP XẾP ĐƠN GIẢN
 
Đề thi mẫu trắc nghiệm cấu trúc dữ liệu cà giải thuật
Đề thi mẫu trắc nghiệm cấu trúc dữ liệu cà giải thuậtĐề thi mẫu trắc nghiệm cấu trúc dữ liệu cà giải thuật
Đề thi mẫu trắc nghiệm cấu trúc dữ liệu cà giải thuật
 
Giáo trình Phân tích và thiết kế giải thuật - CHAP 4
Giáo trình Phân tích và thiết kế giải thuật - CHAP 4Giáo trình Phân tích và thiết kế giải thuật - CHAP 4
Giáo trình Phân tích và thiết kế giải thuật - CHAP 4
 
Giáo trình Phân tích và thiết kế giải thuật - CHAP 3
Giáo trình Phân tích và thiết kế giải thuật - CHAP 3Giáo trình Phân tích và thiết kế giải thuật - CHAP 3
Giáo trình Phân tích và thiết kế giải thuật - CHAP 3
 
Bai3 timkiemsapxep
Bai3 timkiemsapxepBai3 timkiemsapxep
Bai3 timkiemsapxep
 
Giáo trình Phân tích và thiết kế giải thuật - CHAP 6
Giáo trình Phân tích và thiết kế giải thuật - CHAP 6Giáo trình Phân tích và thiết kế giải thuật - CHAP 6
Giáo trình Phân tích và thiết kế giải thuật - CHAP 6
 
Phân tích một số thuật toán
Phân tích một số thuật toánPhân tích một số thuật toán
Phân tích một số thuật toán
 
Chuong 2 co so phan tich do phuc tap cua giai thuat - sinh vien 2
Chuong 2   co so phan tich do phuc tap cua giai thuat - sinh vien 2Chuong 2   co so phan tich do phuc tap cua giai thuat - sinh vien 2
Chuong 2 co so phan tich do phuc tap cua giai thuat - sinh vien 2
 
Kiểu mảng_Tìm kiếm tuần tự
Kiểu mảng_Tìm kiếm tuần tựKiểu mảng_Tìm kiếm tuần tự
Kiểu mảng_Tìm kiếm tuần tự
 
Bài tập CTDL và GT 1
Bài tập CTDL và GT 1Bài tập CTDL và GT 1
Bài tập CTDL và GT 1
 
Đệ quy và quay lui
Đệ quy và quay luiĐệ quy và quay lui
Đệ quy và quay lui
 
Baigiang - bai4. Bài Toán Và Thuật Toán
Baigiang - bai4. Bài Toán Và Thuật ToánBaigiang - bai4. Bài Toán Và Thuật Toán
Baigiang - bai4. Bài Toán Và Thuật Toán
 
Đề tài: Thiết kế và phân tích thuật toán, HAY
Đề tài: Thiết kế và phân tích thuật toán, HAYĐề tài: Thiết kế và phân tích thuật toán, HAY
Đề tài: Thiết kế và phân tích thuật toán, HAY
 
Tìm kiếm và sắp nội
Tìm kiếm và sắp nộiTìm kiếm và sắp nội
Tìm kiếm và sắp nội
 
Chap1 new (tran dai's conflicted copy 2013 04-02)
Chap1 new (tran dai's conflicted copy 2013 04-02)Chap1 new (tran dai's conflicted copy 2013 04-02)
Chap1 new (tran dai's conflicted copy 2013 04-02)
 
Phân tích và thiết kế thuật toán độ phức tạp
Phân tích và thiết kế thuật toán   độ phức tạpPhân tích và thiết kế thuật toán   độ phức tạp
Phân tích và thiết kế thuật toán độ phức tạp
 
Ctdl+va+gt chuong+1 4
Ctdl+va+gt chuong+1 4Ctdl+va+gt chuong+1 4
Ctdl+va+gt chuong+1 4
 

Similar to Chuong 2 (20)

Bai3 timkiem sapxep
Bai3 timkiem sapxepBai3 timkiem sapxep
Bai3 timkiem sapxep
 
Chuong 2 Tim Kiem N Sap Xep
Chuong 2   Tim Kiem N Sap XepChuong 2   Tim Kiem N Sap Xep
Chuong 2 Tim Kiem N Sap Xep
 
CHƯƠNG 4.pdf
CHƯƠNG 4.pdfCHƯƠNG 4.pdf
CHƯƠNG 4.pdf
 
1. Algorithms_ Giải thuật.ppt
1. Algorithms_ Giải thuật.ppt1. Algorithms_ Giải thuật.ppt
1. Algorithms_ Giải thuật.ppt
 
344444
344444344444
344444
 
Ctdl C08
Ctdl C08Ctdl C08
Ctdl C08
 
5 Array
5 Array5 Array
5 Array
 
Mot sothuattoan
Mot sothuattoanMot sothuattoan
Mot sothuattoan
 
Session 4
Session 4Session 4
Session 4
 
C2 sap xep
C2 sap xepC2 sap xep
C2 sap xep
 
ngon-ngu-lap-trinh-python_C1_cac_khai_niem_(PIII).pptx
ngon-ngu-lap-trinh-python_C1_cac_khai_niem_(PIII).pptxngon-ngu-lap-trinh-python_C1_cac_khai_niem_(PIII).pptx
ngon-ngu-lap-trinh-python_C1_cac_khai_niem_(PIII).pptx
 
GV
GVGV
GV
 
Chap2 new (tran dai's conflicted copy 2013 04-02)
Chap2 new (tran dai's conflicted copy 2013 04-02)Chap2 new (tran dai's conflicted copy 2013 04-02)
Chap2 new (tran dai's conflicted copy 2013 04-02)
 
Chap2 new
Chap2 newChap2 new
Chap2 new
 
CHƯƠNG 2.pdf
CHƯƠNG 2.pdfCHƯƠNG 2.pdf
CHƯƠNG 2.pdf
 
Hệ mật mã elgamal
Hệ mật mã elgamalHệ mật mã elgamal
Hệ mật mã elgamal
 
Section 2
Section 2Section 2
Section 2
 
08 long gagd_t3+t5
08 long gagd_t3+t508 long gagd_t3+t5
08 long gagd_t3+t5
 
Ky thuatkhudequy
Ky thuatkhudequyKy thuatkhudequy
Ky thuatkhudequy
 
Giáo trình MSWLOGO Lớp 5
Giáo trình MSWLOGO Lớp 5Giáo trình MSWLOGO Lớp 5
Giáo trình MSWLOGO Lớp 5
 

Chuong 2

  • 1. SẮP XẾP Nguyễn Văn Linh Khoa Công nghệ thông tin & Truyền thông ĐẠI HỌC CẦN THƠ
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9. Ví dụ sắp xếp chọn 12 10 10 9 9 6 5 3 2 2 Kết quả 12 10 Bước 8 10 12 10 Bước 7 10 12 10 9 Bước 6 10 9 10 12 9 Bước 5 10 9 10 9 12 6 Bước 4 6 9 10 9 12 10 5 Bước 3 5 9 10 9 12 10 6 3 Bước 2 3 9 10 9 12 10 6 5 2 Bước 1 3 9 10 9 12 10 2 5 6 2 Bước 0 3 9 10 9 12 10 2 2 6 5 Ban đầu a[9] a[8] a[7] a[6] a[5] a[4] a[3] a[2] a[1] a[0] Khóa Bước
  • 10. Lưu đồ sắp xếp chọn Begin i = 0 i<=n-2 lowindex = i lowkey = a[i].key j<=n-1 i = i+1 a[j].key<lowkey lowindex = j lowkey = a[j].key j = j+1 j = i+1 End swap(a[i],a[lowindex]) S Đ Đ Đ S S
  • 11.
  • 12.
  • 13.
  • 14.
  • 15. Ví dụ sắp xếp xen 12 10 10 9 9 6 5 3 2 2 Bước 9 12 10 10 9 9 6 5 2 2 Bước 8 12 10 10 9 6 5 2 2 Bước 7 12 10 9 6 5 2 2 Bước 6 12 10 6 5 2 2 Bước 5 10 6 5 2 2 Bước 4 6 5 2 2 Bước 3 6 5 2 Bước 2 6 5 Bước 1 3 9 10 9 12 10 2 2 6 5 Ban đầu a[9] a[8] A[7] a[6] a[5] a[4] a[3] a[2] a[1] a[0] Khóa Bước
  • 16. Lưu đồ sắp xếp xen Begin i = 1 i<=n-1 (j>0) and (a[j].key < a[j-1].key) i = i+1 j = i End swap(a[j],a[j-1]) j = j-1 S Đ Đ S
  • 17.
  • 18.
  • 19.
  • 20. Ví dụ sắp xếp “nổi bọt” 12 10 10 9 9 6 5 3 2 2 Kết quả 12 10 Bước 9 12 10 10 Bước 8 12 10 10 9 Bước 7 12 10 10 9 9 Bước 6 12 10 10 9 9 6 Bước 5 12 10 10 9 9 6 5 Bước 4 10 12 10 9 9 6 5 3 Bước 3 10 9 12 10 9 3 6 5 2 Bước 2 9 10 9 12 10 3 2 6 5 2 Bước 1 3 9 10 9 12 10 2 2 6 5 Ban đầu a[9] a[8] a[7] a[6] A[5] a[4] a[3] a[2] a[1] a[0] Khóa Bước
  • 21. Lưu đồ sắp xếp nổi bọt Begin i = 0 i<=n-2 i = i+1 j = n-1 End swap(a[j],a[j-1]) S Đ Đ S a[j].key < a[j-1].key j>= i+1 Đ j = j-1 S
  • 22.
  • 23.
  • 24.
  • 25.
  • 26. Ví dụ về phân hoạch Chốt p = 8 L=0 R=9 4 15 1 8 12 5 10 2 8 5 Khoá 9 8 7 6 5 4 3 2 1 0 Chỉ số
  • 27. Ví dụ về phân hoạch L= 1 Chốt p = 8 R=9 4 15 1 8 12 5 10 2 8 5 Khoá 9 8 7 6 5 4 3 2 1 0 Chỉ số
  • 28. Ví dụ về phân hoạch L= 1 Chốt p = 8 R=9 8 15 1 8 12 5 10 2 4 5 Khoá 9 8 7 6 5 4 3 2 1 0 Chỉ số
  • 29. Ví dụ về phân hoạch L= 2 Chốt p = 8 R=9 8 15 1 8 12 5 10 2 4 5 Khoá 9 8 7 6 5 4 3 2 1 0 Chỉ số
  • 30. Ví dụ về phân hoạch L= 3 Chốt p = 8 R=9 8 15 1 8 12 5 10 2 4 5 Khoá 9 8 7 6 5 4 3 2 1 0 Chỉ số
  • 31. Ví dụ về phân hoạch L= 3 Chốt p = 8 R= 8 8 15 1 8 12 5 10 2 4 5 Khoá 9 8 7 6 5 4 3 2 1 0 Chỉ số
  • 32. Ví dụ về phân hoạch L= 3 Chốt p = 8 R= 7 8 15 1 8 12 5 10 2 4 5 Khoá 9 8 7 6 5 4 3 2 1 0 Chỉ số
  • 33. Ví dụ về phân hoạch L= 3 Chốt p = 8 R= 7 8 15 10 8 12 5 1 2 4 5 Khoá 9 8 7 6 5 4 3 2 1 0 Chỉ số
  • 34. Ví dụ về phân hoạch L= 4 Chốt p = 8 R= 7 8 15 10 8 12 5 1 2 4 5 Khoá 9 8 7 6 5 4 3 2 1 0 Chỉ số
  • 35. Ví dụ về phân hoạch L= 5 Chốt p = 8 R= 7 8 15 10 8 12 5 1 2 4 5 Khoá 9 8 7 6 5 4 3 2 1 0 Chỉ số
  • 36. Ví dụ về phân hoạch L= 5 Chốt p = 8 R= 6 8 15 10 8 12 5 1 2 4 5 Khoá 9 8 7 6 5 4 3 2 1 0 Chỉ số
  • 37. Ví dụ về phân hoạch L= 5 Chốt p = 8 R= 5 8 15 10 8 12 5 1 2 4 5 Khoá 9 8 7 6 5 4 3 2 1 0 Chỉ số
  • 38. Ví dụ về phân hoạch L= 5 Chốt p = 8 R= 4 8 15 10 8 12 5 1 2 4 5 Khoá 9 8 7 6 5 4 3 2 1 0 Chỉ số 5 1 2 4 5 4 3 2 1 0 8 15 10 8 12 9 8 7 6 5
  • 39.
  • 40. Ví dụ về QuickSort Chốt p = 8 Chốt p = 5 5 1 2 4 5 8 15 10 8 12 4 15 1 8 12 5 10 2 8 5 Khoá 9 8 7 6 5 4 3 2 1 0 Chỉ số
  • 41. Ví dụ về QuickSort Chốt p = 8 Chốt p = 5 Chốt p = 4 8 15 10 8 12 5 1 2 4 5 Khoá 9 8 7 6 5 4 3 2 1 0 Chỉ số 5 1 5 2 4 5 1 8 15 10 8 12 2 4 1 5 5
  • 42. Ví dụ về QuickSort Chốt p = 8 Chốt p = 5 Chốt p = 4 Chốt p = 2 1 2 xong xong xong xong Chốt p = 12 8 15 10 8 12 5 1 2 4 5 Khoá 9 8 7 6 5 4 3 2 1 0 Chỉ số 5 1 5 2 4 5 1 8 15 10 8 12 2 4 4 2 1 5 5 2 1 4
  • 43. Ví dụ về QuickSort Chốt p = 8 Chốt p = 5 Chốt p = 4 Chốt p = 2 1 2 xong xong xong xong Chốt p = 12 Chốt p = 10 xong xong Chốt p = 15 8 15 10 8 12 5 1 2 4 5 Khoá 9 8 7 6 5 4 3 2 1 0 Chỉ số 5 1 5 2 4 5 1 8 12 15 10 8 12 8 2 4 4 2 1 5 5 2 1 4 10 8 8 12 15 8 8 10
  • 44. Ví dụ về QuickSort Chốt p = 8 Chốt p = 5 Chốt p = 4 Chốt p = 2 1 2 xong xong xong xong Chốt p = 12 Chốt p = 10 xong xong Chốt p = 15 xong xong 8 15 10 8 12 5 1 2 4 5 Khoá 9 8 7 6 5 4 3 2 1 0 Chỉ số 5 1 5 2 4 5 1 8 12 15 10 8 12 8 2 4 4 2 1 5 5 2 1 4 10 8 8 12 15 15 12 8 8 10 12 15
  • 45. Lưu đồ h àm FindPivot Begin k = i+1 firstkey = a[i].key (k<=j) and (a[k].key == firstkey k > j a[k].key>firstkey k = k+1 End Đ Đ Đ S S return -1 return i return k i, j S
  • 46.
  • 47.
  • 48. Lưu đồ h àm Partition Begin L = i; R = j L <= R a[R].key >= pivot a[L].key < pivot L = L+1 End Đ Đ S S return L i, j, pivot S R = R-1 L < R Swap(a[L], a[R]) Đ S Đ
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55. Ví dụ về heap 2 3 6 5 9 6 7 7 6 9
  • 56.
  • 57.
  • 58. Lưu đồ h àm PushDown Begin r = first r <= (last-1)/2 a[r].key > a[last].key last==2*r+1 r = last End Đ Đ S S first, last S swap(a[r],a[last]) a[r].key > a[2*r+1].key and a[2*r+1].key <= a[2*r+2].key swap(a[r], a[2*r+1]) r = 2*r+1 Đ S Đ S a[r].key > a[2*r+2].key and a[2*r+2].key < a[2*r+1].key swap(a[r], a[2*r+2]) r = 2*r+2 Đ r = last
  • 59.
  • 60.
  • 61.
  • 62.
  • 63. HeapSort: Trình bày bằng bảng T ạo Heap 3 9 10 9 12 10 2 2 6 5 Ban đầu a[9] a[8] a[7] a[6] A[5] a[4] a[3] a[2] a[1] a[0] Khóa Bước