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

Please purchase a
Please purchase a
personal license.
personal license.
SHELL SORT
SHELL SORT
Ôn t
Ôn t


p Insertion sort
p Insertion sort
Ý tưởng của thuật toán:
• Giả sử dãy {a
0
,a
1
,…a
n-1
} có k phần tử đầu tiên
{a
0
,a
1
,…a
k-1
} đã có thứ tự.
• Chèn phần tử a
k
vào dãy đã có thứ  có dãy mới
{a

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}
Ôn t
Ôn t


p Insertion sort
p Insertion sort
Code:
void Insertion_sort (int a[], int n)
{ for (int i=1;i<n;i++)
{ int x=a[i];
for ( int k =i; (k>0)&&(a[k-1]>x);k )
a[k]=a[k-1];
a[k]=x;
}
}
Shell sort
Shell sort
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
các thuật toán sắp xếp có độ phức tạp O(n
2
).
– 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

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

}
Shell sort
Shell sort
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
Shell sort
Shell sort
13 7 3 1 16 11 10 8
2. d=2

So sánh a[0] =13 > a[2] =3


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status