intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Cấu trúc dữ liệu và giải thuật (phần 3)

Chia sẻ: Nguyen Kien | Ngày: | Loại File: PDF | Số trang:10

108
lượt xem
37
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Trong tài liệu này các bạn sẽ làm quen với thuật toán sắp xếp shell sort, một thuật toán tuyệt vời nó là cả tiến của thuật toán insertion sort, rất thú vị nếu bạn chạy bằng tay

Chủ đề:
Lưu

Nội dung Text: Cấu trúc dữ liệu và giải thuật (phần 3)

  1. Please purchase a personal license. personal
  2. SHELL SORT SHELL
  3. Ôn t p Insertion sort Ôn Insertion Ý tư ng c a thu t toán: • Gi s dãy {a0,a1,…an-1} có k ph n t u tiên {a0,a1,…ak-1} ã có th t . • Chèn ph n t ak vào dãy ã có th có dãy m i {a0,a1,…,ak-1,ak} có th t . • V trí c n chèn ak chính là gi a 2 ph n t ai-1 và ai sao cho ai-1 ≤ ak ≤ ai
  4. Ôn t p Insertion sort Ôn Insertion Ví d : A = { 5 8 6 3 10 } Ban u m ng A có {5} ã s p x p 1. Chèn 8 vào {5} {5,8} 2. Chèn 6 vào {5,8} {5,6,8} 3. Chèn 3 vào {5,6,8} {3,5,6,8} 4. Chèn 10 vào {3,5,6,8} {3,5,6,8,10}
  5. Ôn t p Insertion sort Ôn Insertion Code: void Insertion_sort (int a[], int n) { for (int i=1;i0)&&(a[k-1]>x);k--) a[k]=a[k-1]; a[k]=x; } }
  6. Shell sort Shell Gi i thi u: – ư c phát minh b i Donald L.Shell vào năm 1959 – Shell sort là thu t toán hi u qu nh t trong nhóm ph c t p O(n2). các thu t toán s p x p có – Shell sort là s c i ti n c a Insertion sort d a vào hai nh n xét sau ây: • Insertion sort s r t hi u qu n u d li u u vào h u như ã ư c s p x p ( ã ư c x p trong t ng kho ng c c b ). • Insertion sort ho t ng kém hi u qu vì nó di chuy n các giá tr ph n t m i l n ch m t v trí.
  7. Shell sort Shell Ý tư ng thu t toán: - Thu t toán Shell sort v i s bư c gi m d n - Ch n kho ng cách gi a các bư c d = n; d=(d+1)/2 - Phân chia dãy ban u thành các dãy con cách nhau d kho ng - S p x p t ng dãy con b ng Insertionsort
  8. Shell sort Shell Cài t thu t toán: void ShellSort (int a[], int n) { int d=n; while (d >=1) { d = (d+1)/2; for (int i=0;i
  9. Shell sort Shell Ví d : n=8; 16 7 10 1 13 11 3 8 1. d=4 So sánh a[0] =16 > a[4] =13 Swap (a[0],a[4]) 13 7 10 1 16 11 3 8 So sánh a[1] = 7 < a[5] =11 !Swap (a[1],a[5]) 13 7 10 1 16 11 3 8 So sánh a[2] =10 > a[6] = 3 Swap (a[2],a[6]) 13 7 3 1 16 11 10 8 So sánh a[3] =1 < a[7] = 8 !Swap (a[3],a[7]) 13 7 3 1 16 11 10 8
  10. Shell sort Shell 13 7 3 1 16 11 10 8 2. d=2 So sánh a[0] =13 > a[2] =3 Swap (a[0],a[2]) 3 7 13 1 16 11 10 8 So sánh a[1] = 7 > a[3] =1 Swap (a[1],a[3]) 3 1 13 7 16 11 10 8 So sánh a[2] =13 < a[4] = 6 !Swap (a[2],a[4]) 3 1 13 7 16 11 10 8 So sánh a[3] =7 < a[5] =11 !Swap (a[3],a[5]) 3 1 13 7 16 11 10 8 So sánh a[4] =16 > a[6] =10 Swap (a[4],a[6]) 3 1 13 7 10 11 16 8
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2