A. Metode – metode Sorting :
a) Bubble Sort
Pengurutan model ini mengambil ide dari gelembung air, yaitu mengapungkan elemen yang bernilai kecil dari bawah ke atas. Proses pengapungan dilakukan dengan pertukaran elemen-elemen tabel.
Apabila kita menginginkan array terurut menaik, maka elemen array yang berharga paling kecil “diapungkan” artinya diangkat ke “atas” (atau ke ujung kiri array) melalui proses pretukaran. Proses pengapungkan ini dilakukan sebanyak n-1 langkah (satu langkah disebut satu kali pass) dengan n adalah ukuran array.
program arh_bsort_menaik;
uses crt;
var i,n,j : integer;
a: array [1..100] of integer;
procedure buble;
var z: integer;
begin
for i:= 1 to n-1 do
begin
for j:= n downto i+1 do
begin
if a[j] < a[j-1] then
begin
z:= a[j];
a[j]:= a[j-1];
a[j-1]:=z;
end;
end;
end;
end;
begin
write('masukkan banyak larik (maks 100) : '); readln(n);
for i:= 1 to n do
begin
write('A[',i,'] : '); readln(a[i]);
end;
buble;
write('data setelah diurutkan : ');
for j:=1 to n do
write (a[j],' ');
end.
Pengurutan model ini dengan membuat cara menyisipkan program semacam algoritma pascalInsertion Urutkan sedikit lebih efisien dibandingkan algoritma pengurutan Bubble Sort. Seperti namanya menyiratkan, yang memasukkan algoritma insertion sort item unsorted dalam daftar item yang sudah diurutkan. Hal ini membuat Anda berpikir tentang penggunaan dua array terpisah - satu unsorted dan yang lainnya disortir. Namun, untuk menghemat ruang satu menggunakan array yang sama dan menggunakan pointer untuk memisahkan unsur-unsur diurutkan dan disortir dari daftar. Waktu menyortir Kompleksitas Insertion Sort adalah O (n2). Meskipun hal ini persis sama untuk Bubble Sort, algoritma Insertion Sort adalah dua kali lebih efisien, namun tidak efisien untuk daftar besar.
CONTOH programnya:
uses crt;
var
jmldata,i,j:integer;
data,x:array [1..100] of integer;
procedure asc_insert;
var temp:integer;
begin
For i := 2 to jmldata do
Begin
Temp :=data[i];
j := i-1;
while (data[j] > temp) and (j>0) do
begin
data[j+1] := data[j];
dec(j);
end;
data[j+1]:=temp;
end;
writeln('data yang telah di urut');
for i:=1 to jmldata do
begin
write(data[i],' ');
end;
readln;
end;
begin
clrscr;
write('masukkan berapa angka yang akan di urut: '); readln(jmldata);
for i:=1 to jmldata do
begin
write('masukkan angka ke-',i,':'); readln(data[i]);
end;
asc_insert;
readln;
end;
0 komentar:
Posting Komentar