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 Xepquang
 
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 7Nguyễn Công Hoàng
 
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ẢNTrần Nguyê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ậtHưởng Nguyễn
 
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 4Nguyễn Công Hoàng
 
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 3Nguyễn Công Hoàng
 
Bai3 timkiemsapxep
Bai3 timkiemsapxepBai3 timkiemsapxep
Bai3 timkiemsapxepnhà tôi
 
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 6Nguyễn Công Hoàng
 
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ánHồ Lợ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 2Hồ Lợi
 
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ựVõ Tâm Long
 
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 1Hồ Lợi
 
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ánVan Vo
 
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ộikikihoho
 
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ạpgiangnguyn853776
 
Ctdl+va+gt chuong+1 4
Ctdl+va+gt chuong+1 4Ctdl+va+gt chuong+1 4
Ctdl+va+gt chuong+1 4Do 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

Bai3 timkiem sapxep
Bai3 timkiem sapxepBai3 timkiem sapxep
Bai3 timkiem sapxepHồ Lợi
 
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 Xepquang
 
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.pptNynonBi
 
Ctdl C08
Ctdl C08Ctdl C08
Ctdl C08giang
 
5 Array
5 Array5 Array
5 ArrayCuong
 
Mot sothuattoan
Mot sothuattoanMot sothuattoan
Mot sothuattoanHoàng My
 
Session 4
Session 4Session 4
Session 4pnanhvn
 
C2 sap xep
C2 sap xepC2 sap xep
C2 sap xephiep0109
 
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).pptxssuser49db3c1
 
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)Loc Tran
 
Ky thuatkhudequy
Ky thuatkhudequyKy thuatkhudequy
Ky thuatkhudequyHồ Lợi
 
Giáo trình Msw Logo lớp 5
Giáo trình Msw Logo lớp 5Giáo trình Msw Logo lớp 5
Giáo trình Msw Logo lớp 5Qian Qian
 

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
Chap2 newChap2 new
Chap2 new
 
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)
 
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 Msw Logo lớp 5
Giáo trình Msw Logo lớp 5Giáo trình Msw Logo lớp 5
Giáo trình Msw Logo 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