met siang friend, Beberapa hari yang lalu gue dapat tugas nih sorting data, bersyukur pas waktu obok- obok di situs dapet deh hasilnya . terus copy paste dechh.... hi curang yaaa .... :)


Sorting

Beberapa metode sorting mengurutkan data yang dikenal antara lain adalah:
1. Bubble Sort (sederhana tetapi lambat)
2. Quick Sort (cepat tetapi rumit)
3. Shell Sort (agak cepat dan tidak terlalu rumit)

1. Bubble Sort
Teknik ini menyusun data yang diinginkan secara berurutan dengan membandingkan elemen data yang ada, misalkan kita akan meyusun data secara (ascending) cacah naik. Maka lagoritma utamanya adalah seperti ini.

SYNTAX

for i:=1 to Jumlah_data-1 do
for j:=i+1 to Jumlah_data do
if Data[i]>Data[j] then
begin
t:=Data[i];
Data[i]:=Data[j];
Data[j]:=t;
end;

Contoh.
Misal kita punya data : 5 3 8 4 1 7 6 2 , dalam program
program mengurutkandata;

uses WinCrt;
type urutkan=array [1..8] of integer;
var i,j,t:integer;
anu:urutkan;
begin
anu[1]:=5; anu[2]:= 3;
anu[3]:= 8; anu[4]:= 4;
anu[5]:= 1; anu[6]:= 7 ;
anu[7]:=6 ; anu[8]:=2 ;
for i:=1 to 7 to
begin
for j:=i+1 to 8 to
begin
if anu[i]>anu[j] then
begin
t:=anu[i];
anu[i]:=anu[j];
anu[j]:=t;
end;
end;
end;
for i:=1 to 8 do
write (anu[i], ‘ ‘)
end.

2. Shell sort
Prinsipnya hampir sama dengan bubble sort tetapi dioptmisisasi sehingga lebih cepat. Ditemukan oleh Donald Shell. prinsipnya adalah membandingkan data dengan jarak tertentu dalam array.
SYNTAX

for jarak:= (Jumlah_data div 2) down to 1 do
for i:=1 to Jumlah_data-jarak do
if Data[i]>Data[i+jarak] then
begin
t:=Data[i];
Data[i]:=Data[i+jarak];
Data[i+jarak]:=t;
end;

Misalkan kita punya 8 data. Langkah pertama adalah membandingkan data pertama dengan ke lima, dsb. Jarak antara data adalah (8 div 2 :=4).
Langkah iterasi:
pertama, jarak adalah 4.
5 3 8 4 1 7 6 2
ke-1 perbandingan : ^ ^ (salah urutan, tukar)
1 3 8 4 5 7 6 2
ke-2 perbandingan : ^ ^ ( urutan benar, no tukar)
ke-3 perbandingan : ^ ^ (salah urutan, tukar)
1 3 6 4 5 7 8 2
ke-4 perbandingan : ^ ^ (salah urutan, tukar)
1 3 6 2 5 7 8 4 —-> Jarak 3.
ke-5 perbandingan : ^ ^ ( urutan benar, no tukar)
ke-6 perbandingan : ^ ^ ( urutan benar, no tukar)
ke-7 perbandingan : ^ ^ ( urutan benar, no tukar)
ke-8 perbandingan : ^ ^ ( urutan benar, no tukar)
ke-9 perbandingan : ^ ^ (salah urutan, tukar)
1 3 6 2 4 7 8 5 —-> Jarak 2.
ke-10 perbandingan :^ ^ ( urutan benar, no tukar)
ke-11 perbandingan : ^ ^ (salah urutan, tukar)
1 2 6 3 4 7 8 5
ke-12 perbandingan : ^ ^ (salah urutan, tukar)
1 2 4 3 6 7 8 5
ke-13 perbandingan : ^ ^ ( urutan benar, no tukar)
ke-14 perbandingan : ^ ^ ( urutan benar, no tukar)
ke-15 perbandingan : ^ ^ (salah urutan, tukar)
1 2 4 3 6 5 8 7 —-> Jarak 1.
ke-16 perbandingan :^ ^ ( urutan benar, no tukar)
ke-17 perbandingan : ^ ^ ( urutan benar, no tukar)
ke-18 perbandingan : ^ ^ (salah urutan, tukar)
1 2 3 4 6 5 8 7
ke-19 perbandingan : ^ ^ ( urutan benar, no tukar)
ke-20 perbandingan : ^ ^ (salah urutan, tukar)
1 2 3 4 5 6 8 7
ke-21 perbandingan : ^ ^ ( urutan benar, no tukar)
ke-22 perbandingan : ^ ^ (salah urutan, tukar)
1 2 3 4 5 6 7 8

3. quick sort
diketemukan oleh E. Hoare. Dengan menggunakan metode rekursi samapi habis. Prinsipnya membagi data menjadi dua bagian yang sama (kiri dan kanan). Dimana data tengah menjadi pivot (pusat operasi). Kumpulkan data dengan nilai lebih kecil dari pivot disebelah kiri pivot, dan di kanan untuk yang lebih besar. Dimungkinkan bagian kiri dan kanan pivot tidak sama besarnya. Untuk itu tiap bagin di bagi menjadi dua lagi dan mempuyi pivot yang baru. Contoh misal kita mempunyai data array integer.

procedure qsort(bawah, atas : integer)
var kiri, kanan, pivot : integer;
begin
pivot:=Data[(bawah+atas) div 2];
kiri:=bawah;
kanan:=atas;
while kiri<=kanan do
begin
while Data[kiri] < pivot do kiri:=kiri+1; { memisahkan ke kiri }
while Data[kanan]>pivot do kanan:=kanan-1;{Memisahkan ke kanan}
if kiri<=kanan then { chek perubahan }
begin
swap Data[kiri] with Data[kanan];
kiri:=kiri+1;
kanan:=kanan-1;
end;
end;
if kanan>bawah then qsort(bawah,kanan);{ urutkan bagian KIRI }
if atas>kiri then qsort(kiri ,atas);{ urutkan bagian KANAN}
end;

Pemangilan dalam program utama : qsort(1,NumberOfData);

alamat aslinya coding nih (http://k4n9m4s.wordpress.com/2007/09/25/pemrograman-pascal-07/)

sorry ya brow gue copy paste


 
Top