Tugas X Lanjutan Shorting
Soal :
- Jelaskan apa yang dimaksud dengan shell sort !
- Buatlah suatu program tentang merge sort !
- Sebutkan kelebihan dan kelemahan sort !
- Sebutkan metode-metode teknik sort !
- Siapakah yang pertama kali menemukan algoritma merge sort ?
Pengertian Shell Sort (Metode
Shell)
Metode ini disebut juga dengan
metode pertambahan menurun (diminishing increment). Metode ini dikembangkan
oleh Donald L. Shell pada tahun 1959, sehingga sering disebut dengan Metode
Shell Sort. Metode ini mengurutkan data dengan cara membandingkan suatu data
dengan data lain yang memiliki jarak tertentu, kemudian dilakukan penukaran
bila diperlukan. Proses pengurutan dengan metode Shell dapat dijelaskan sebagai
berikut :
Pertama-tama adalah menentukan
jarak mula-mula dari data yang akan dibandingkan, yaitu N / 2. Data pertama
dibandingkan dengan data dengan jarak N / 2. Apabila data pertama lebih besar
dari data ke N / 2 tersebut maka kedua data tersebut ditukar. Kemudian data
kedua dibandingkan dengan jarak yang sama yaitu N / 2. Demikian seterusnya
sampai seluruh data dibandingkan sehingga semua data ke-j selalu lebih kecil
daripada data ke-(j + N / 2).
Pada proses berikutnya, digunakan jarak (N / 2) / 2 atau N / 4.Data pertama dibandingkan dengan data dengan jarak N / 4. Apabila data pertama lebih besar dari data ke N / 4 tersebut maka kedua data tersebut ditukar. Kemudian data kedua dibandingkan dengan jarak yang sama yaitu N / 4. Demikianlah seterusnya hingga seluruh data dibandingkan sehingga semua data ke-j lebih kecil daripada data ke- (j + N /4). Pada proses berikutnya, digunakan jarak (N / 4) / 2 atau N / 8. Demikian seterusnya sampai jarak yang digunakan adalah 1.
Contoh program merge sort dalam pascal
type INTARRAY = array[1..100000] of integer;
procedure gen_array(var A:INTARRAY; N:integer);
var i:integer;
begin
for i:=1 to N do A[i]:=Random(10*N);
end;
{copia l’array X in Y}
procedure copy_array(var X, Y:INTARRAY; n:integer);
var i:integer;
begin
for i := 0 to N do Y[i] := X[i];
end;
Function min(a,b:integer):integer;
begin if a
else min := b;
end;
Pada proses berikutnya, digunakan jarak (N / 2) / 2 atau N / 4.Data pertama dibandingkan dengan data dengan jarak N / 4. Apabila data pertama lebih besar dari data ke N / 4 tersebut maka kedua data tersebut ditukar. Kemudian data kedua dibandingkan dengan jarak yang sama yaitu N / 4. Demikianlah seterusnya hingga seluruh data dibandingkan sehingga semua data ke-j lebih kecil daripada data ke- (j + N /4). Pada proses berikutnya, digunakan jarak (N / 4) / 2 atau N / 8. Demikian seterusnya sampai jarak yang digunakan adalah 1.
Contoh program merge sort dalam pascal
type INTARRAY = array[1..100000] of integer;
procedure gen_array(var A:INTARRAY; N:integer);
var i:integer;
begin
for i:=1 to N do A[i]:=Random(10*N);
end;
{copia l’array X in Y}
procedure copy_array(var X, Y:INTARRAY; n:integer);
var i:integer;
begin
for i := 0 to N do Y[i] := X[i];
end;
Function min(a,b:integer):integer;
begin if a
else min := b;
end;
0 komentar: