Вы находитесь на странице: 1из 14

B GIO DC V O TO

TRNG I HC S PHM H NI
KHOA: CNG NGH THNG TIN

BI TP THO LUN
CU TRC D LIU V GII THUT
TI: Thut ton Insertion sort v Heap sort

Ging vin hng dn : Nguyn Tn n


Sinh vin thc hin : Th Quyn

Lp

V Th Tuyn
Nguyn Th Hng
Nguyn Th Hu
: K60C

B mn: Cu trc d liu & gii thut

MC LC
...................................................................................1

MC LC..............................................................................2
LI M U.......................................................................... 3
CHNG I: SP XP VUN NG..............................................4
(HEAP SORT)......................................................................4
I. tng:............................................................................................... 4
II. V d minh ha....................................................................................4
III. Gii thut........................................................................................... 5
IV. nh gi phc tp:.........................................................................6
V. Ci t bng C.....................................................................................7

CHNG II: SP XP THM DN ............................................9


(INSERTION SORT)................................................................9
I. tng................................................................................................ 9
II. V d minh ha.....................................................................................9
III.

Gii thut:.......................................................................................10

IV. nh gi gii thut:...........................................................................11


V. Ci t bng C:...................................................................................12

TI LIU THAM KHO...........................................................14

GV hng dn: Nguyn Tn n


Trng HSP H Ni

B mn: Cu trc d liu & gii thut

LI M U
Ngy nay, truy xut thng tin nhanh chng v chnh xc, ngi ta
thng sp xp thng tin theo mt trt t hp l no . Sp xp (Sorting)
l qu trnh b tr li cc phn t ca mt tp i tng theo mt th t n
nh. Chng hn th t tng dn (hay gim dn) i vi mt dy s, th t
t in i vi mt dy ch.v.v v c rt nhiu phng php c a ra
gii quyt bi ton ny nh selection sort, insertion sort, exchange sort,
quick sort, merge sort, heap sort
Trong n ny, chng em s trnh by hai thut ton c bn l
insertion sort (sp xp kiu thm dn) v heap sort (sp xp kiu vun
ng) da trn 5 ni dung sau:
1. tng
2. V d minh ha
3. Gii thut
4. nh gi phc tp
5. Ci t bng C
Do iu kin thi gian v kin thc cn hn ch nn bi lm vn cn
nhiu thiu st, chng em rt mong c s ng gp kin ca thy c v
cc bn bi lm c hon thin hn. hon thnh n ny, em xin
chn thnh cm n thy gio Nguyn Tn n v cc bn gip chng em
hon thnh bi tp ny.
Nhm sinh vin thc hin:
Th Quyn
V Th Tuyn
Nguyn Th Hng
Nguyn Th Hu

GV hng dn: Nguyn Tn n


Trng HSP H Ni

6
B mn: Cu trc d liu & gii thut

5CHNG I: SP XP VUN3NG
(HEAP SORT)
I.

7 tng:

Sp xp vun ng (heap - sort) c xut vo nm 1964 bi

J.W.J. Williams trn tp ch Communication of the ACM .

Heap sort l mt gii thut m bo k c trong trng hp xu


chin
imthut
ca heap
l gich
tr l
caO(nlog
mi nt
>= gi tr
nht th thi gian thc
ton cng
2n).
cc nt con ca n
tng c bn ca gii thut ny l thc hin sp xp thng qua
vic to cc ng, trong ng l mt cy nh phn hon chnh m mi
nt c gn mt gi tr kha sao cho kha nt cha bao gi cng ln hn
kha nt con n.
Vic thc hin gii thut chia lm 2 giai on. u tin l vic to
ng t dy ban u, sau sp xp li da trn ng va to c. Do nt
gc l nt ln nht nn n s c chuyn v v tr cui cng ca dy v
phn t cui cng s thay vo gc ca ng. Khi ta c mt cy mi,
khng phi ng, vi s nt c bt i 1. Li chuyn cy ny v ng v
lp li qu trnh cho ti khi ng ch cn 1 nt. chnh l phn t b nht
ca dy v t ln u.
II.

V d minh ha

8
4

GV hng dn: Nguyn Tn n


Trng HSP H Ni

B mn: Cu trc d liu & gii thut

c im ca mi ng l gi tr ca mi nt gi tr cc nt con ca n

ng c iu chnh theo nh ngha


III.

Gii thut
Gii thut to ng:

Procedure ADJUST(i, n);


{ y vect K vi n phn t c coi nh vect lu tr ca mt cy nh
phn hon chnh c n nt}
1. KEY := K[i];

{KEY nhn g tr kha nt gc i}

j := 2*i; {j ghi nhn s th t nt con tri ca nt i}


2. while j <= n do begin
3.

if j < n and K[j] < K[j + 1] then j := j + 1;

{Nu kha con phi ln hn th j ghi nhn s th t ca n}


4.

if KEY > K[j] then begin


K[j/2] := KEY;
5

GV hng dn: Nguyn Tn n


Trng HSP H Ni

B mn: Cu trc d liu & gii thut

Return
End; {y l trng hp kha cha ln hn kha con}
5.

K[j/2] := K[j]; {a kha con ln ln}


j := 2*j
end;

6.

K[j/2] := KEY;

7. return
Vi gii thut ADJUST ny, vic to thnh ng cho mt cy nh phn
hon chnh c n nt s c thc hin bi:
For i := n/2 down to 1 do call ADJUST (i, n);
Gii thut HEAP SORT:
Procedure HEAP SORT (K, n);
1. {To ng ban u}
For i: = n/2 down to 1 do
call ADJUST (i, n);
2. {Sp xp}
For i := n 1 down to 1 do begin
K[1] K[i + 1];
call ADJUST (1, i)
end
3. return
IV.

nh gi phc tp:
i vi HEAP SORT, thi gian thc hin trung bnh T tb(n) =

O(nlog2n).
C th thy rng giai on to ng, c n/2 ln gi thc hin
ADJUST (i,n). Cn giai on sp xp th phi gi thc hin ADJUST(1,i)
(n-1) ln. Nh vy c th coi nh phi gi khong n ln thc hin gii thut

GV hng dn: Nguyn Tn n


Trng HSP H Ni

B mn: Cu trc d liu & gii thut

ADJUST m cy c xt ng vi ADJUST th nhiu nht cng ch c n


nt, ngha l chiu cao ca cy ln nht cng ch xp x log2n.
S lng php so snh gi tr kha, khi thc hin gii thut
ADJUST, cng lm cng ch bng chiu cao ca cy tng ng.
Cho nn, c th ni rng: cng lm th s lng php so snh cng
ch xp x nlog2n (coi log2n l ng vi chiu cao ca cy nh phn hon
chnh c n nt).
T suy ra:
Tx(n) = O(nlog2n)
y chnh l u im ca HEAP SORT nu so vi QUICK
SORT.
Cn v thi gian thc hin trung bnh th c 2 phng php u nh
nhau.
V.
Ci t bng C
void ADJUST(int i, int n)
{
int KEY, j;
KEY = K[i];
j = 2 * i;
while (j <= n)
{
if ( (j < n) && (K[j] < K[j+1]) )
j = j + 1;
if (KEY > K[j])
{
K[j/2] = KEY;
return;

GV hng dn: Nguyn Tn n


Trng HSP H Ni

B mn: Cu trc d liu & gii thut

}
K[j/2] = K[j];
j = 2 * j;
}
K[j/2] = KEY;
}
void HEAPSORT()
{
int i, t;
for (i = n/2; i >= 1; i--)
ADJUST(i, n);
for (i = n-1; i >= 1; i --)
{
t = K[1];
K[1] = K[i+1];
K[i+1] = t;
ADJUST(1, i);
}
}

GV hng dn: Nguyn Tn n


Trng HSP H Ni

B mn: Cu trc d liu & gii thut

CHNG II: SP XP THM DN


(INSERTION SORT)
I.

tng
Nguyn tc sp xp y da theo kinh nghim ca nhng ngi

chi bi. Khi c i 1 l bi c sp xp ang trn tay, nay rt thm l


bi th i na th sp xp li nh th no? C th so snh l bi mi ln
lt vi l bi th (i 1), th (i 2) tm ra ch thch hp v chn
n vo ch .
Da trn nguyn tc ny c th trin khai mt cch sp xp nh sau:
Thot u K1 c coi nh bng ch gm c mt kha sp xp.
Xt thm K2, so snh n vi K1 xc nh ch chn n vo, sau ta s c
mt bng gm 2 kho c sp xp. i vi K 3 ta li so snh vi K2, K1
v c tng t nh vy i vi K 4, K5, K6 cui cng sau khi xt xong K n
th bng kha c sp xp hon ton.
II.

V d minh ha
Cho mng A = {5, 8, 6, 3, 10}
Insertion sort lm nh sau:
Chia mng A lm 2 phn sorted v unsorted
Ban u sorted l B = {5}
Unsorted l C = {8, 6, 3, 10}
Ln lm th nht:
Ly phn t u tin ca C l 8 ra C = {6, 3, 10}
Tm v tr ca s 8 trong mng B B = {5, 8}
Ln lm th hai:
Ly phn t u tin ca C l 6 ra C = { 3, 10}
Tm v tr ca s 6 trong mng B B = {5, 6, 8}
9

GV hng dn: Nguyn Tn n


Trng HSP H Ni

B mn: Cu trc d liu & gii thut

Ln lm th ba:
Ly phn t u tin ca C l 3 ra C = {10}
Tm v tr ca s 3 trong mng B B = {3, 5, 6, 8}
Ln lm th t:
Ly phn t u tin ca C l 10 ra C = {}
Tm v tr ca s 8 trong mng B B = {3, 5, 6, 8,
10}
Kt thc thut ton.
III.
Gii thut:
Procedure INSERT SORT(K, n)
{Trong th tc ny, ngi ta dng X lm nh ph cha kha mi ang
c xt. m bo cho kha mi trong mi trng hp, ngay c khi v
tr thc ca n l v tr u tin, u c chn vo gia kha nh hn n
v kha ln hn n, y a thm vo mt kha gi K0, c gi tr nh hn
mi kha ca bng, v ng trc mi kha . Ta quy c K0 = -
}
1. K[0] = -
2. for i := 2 to n do begin
3. X := K[i]; j := i 1;
4. {Xc nh ch cho kha mi c xt v dch chuyn cc kha cn
thit}
While x < K[j] do begin
K[j + 1] := K[j];
10

GV hng dn: Nguyn Tn n


Trng HSP H Ni

B mn: Cu trc d liu & gii thut

j := j 1;
end;
5. {a X vo ng ch} K[j + 1] := X
End;
6. return
IV.

nh gi gii thut:
Phng php ny rt thun li khi cc kha ca dy c a dn

vo min lu tr. cng chnh l khng gian nh dng sp xp.

Sp xp vn c th thc hin c ngay ti ch ch khng phi

chuyn sang mt min sp xp khc. Lc cc kha cng s ln lt c


xt ti v vic xc nh ch cho kha mi ngha l phi dch chuyn mt s
kha li li sau, a kha mi ra mt ch nh ph v s a vo v tr thc ca
n sau khi y cc kha cn thit li li.

Ta thy cc php so snh xy ra trong vng lp nhm tm v tr thch

hp pos chn x. Mi ln so snh m thy v tr ang xt khng thch hp, ta


di phn t a[pos] sang phi.

Ta cng thy s php gn v s php so snh ca thut ton ph

thuc vo tnh trng ca dy ban u. Do ta ch c th c lng nh sau:


o

Trng hp tt nht: dy ban u c th t. Ta tm

c ngay v tr thch hp chn ngay ln so snh u tin m


khng cn phi v vng lp. Nh vy, vi i chy t 2 n n th s
php so snh tng cng s l n-1. Cn vi s php gn, do thut ton
khng chy vo vng lp nn xt i bt k, ta lun ch phi tn 2 php
gn(x = a[i] v a[pos] = x). T y, ta tnh c s php gn tng
cng bng 2(n - 1).

11

GV hng dn: Nguyn Tn n


Trng HSP H Ni

B mn: Cu trc d liu & gii thut

Trng hp xu nht: dy ban u c th t ngc. Ta

thy ngay v tr thch hp pos lun l v tr u tin ca dy c th


t, v do , tm ra v tr ny ta phi duyt ht dy c th t.
Xt i bt k, ta c s php so snh l i-1, s php gn l (i - 1) + 2 = i
+ 1. Vi i chy t 2 n n, ta tnh c s php so snh tng cng
bng 1 + 2 + + (n - 1) = n(n - 1)/2 v s php gn bng 3 + 4 + ..
+ (n + 1) = (n + 4)(n - 1)/2
Tng kt li, ta c phc tp ca Insertion Sort nh sau:
o

Trng hp tt nht: O(n)

Trng hp xu nht O(n2)

V.
Ci t bng C:
main()
{
int A[20], N, Temp, i, j;
printf("\n\n\t Nhap so phan tu: ");
scanf("%d", &N);
printf("\n\t Nhap so:");
for(i=0; i<N; i++)
{
scanf("\n\t\t%d", &A[i]);
}
for(i=1; i<N; i++)
{
Temp = A[i];
12

GV hng dn: Nguyn Tn n


Trng HSP H Ni

B mn: Cu trc d liu & gii thut

j = i-1;
while(Temp<A[j] && j>=0)
{
A[j+1] = A[j];
j = j-1;
}
A[j+1] = Temp;
}
printf("\n\tDay sau khi sap xep la:\n");
for(i=0; i<N; i++)
printf("\n\t\t\t%d", A[i]);

13

GV hng dn: Nguyn Tn n


Trng HSP H Ni

B mn: Cu trc d liu & gii thut

TI LIU THAM KHO


Cu trc d liu v gii thut Xun Li
Cu trc d liu v gii thut Dng Trn c
http://en.wikipedia.org/wiki/Insertion_sort
http://my.opera.com/chu0tmul/blog/insertion-sort

14

GV hng dn: Nguyn Tn n


Trng HSP H Ni

Вам также может понравиться