Академический Документы
Профессиональный Документы
Культура Документы
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
Lp
V Th Tuyn
Nguyn Th Hng
Nguyn Th Hu
: K60C
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
Gii thut:.......................................................................................10
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
6
B mn: Cu trc d liu & gii thut
5CHNG I: SP XP VUN3NG
(HEAP SORT)
I.
7 tng:
V d minh ha
8
4
c im ca mi ng l gi tr ca mi nt gi tr cc nt con ca n
Gii thut
Gii thut to ng:
Return
End; {y l trng hp kha cha ln hn kha con}
5.
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
}
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);
}
}
tng
Nguyn tc sp xp y da theo kinh nghim ca nhng ngi
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
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
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
11
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
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
14