Pages

SORTING [Pengurutan Data] dengan pascal

Pengurutan data atau sorting merupakan jenis operasi penting dalam pengolahan data yang banyak diterapkan dalam permasalahan sehari-hari. Saat ini telah dikenal beberapa metode Pengurutan data, yaitu seleksi langsung (straight selection), gelembung (buble-sort atau excenge sort), penyisipan langsung (straight insertion), penyisipan biner (binary insertion), Shell sort (diminishing increment sort), quick sort (partition excenge sort), Radix sort serta merge sort (two_way merge sort). Metode penyisipan biner dikembangkan dengan menggabungkan metode penyisipan langsung dan metode pencarian biner. Dalam metode ini, metode pencarian biner digunakan untuk menentukan lokasi penyisipan data yang akan diurutkan.  
 

Metode penyisipan

Memasukkan data yang belum urut kemudian diurutkan sekaligus disimpan ke memori (array)

Contoh :

Data : 23, -5, 2, 80, 16

Urut : ascending dari kecil ke besar

Contoh proses algoritma

Posisi antar kosong
Data 1 : 23
Data 2 : -5
Data 3 : 2
Data 4 : 80
Data 5 : 16
Data [1]23-5-5-5-5
Data [2]23222
Data [3]232316
Data [4]8023
Data [5]80

Contoh Coding Program :

program Contoh31(input, output);

uses wincrt;

{$R-}

{Program yang mengurutkan nilai-nilai pada array}

{Integer yang dimasukkan oleh pemakai}

{Sorting metode penyisipan digunakan untuk}

{memerlukan Daftar agar tetap urut}
Const

Teks = 'Masukkan bilangan (0 untuk stop) : ';

type

TipeArray = array[1..100] of integer;

var

ArrayInteger : TipeArray;

DataItem, JumlahItem : Integer;


 

procedure DaftarArray(var ArrayInt :TipeArray; JumlahElemen :Integer);


 

{procedure untuk menampilkan isi daftar pada ArrayInt}

var

indek : Integer;

begin

write(' Isi Daftar ',JumlahElemen,'Item :');

for indek :=1 to JumlahElemen do

Write(ArrayInt[indek]:4);

writeln

end;


 

procedure sisip(var ArrayInt : TipeArray; ItemBaru, JumlahElemen :integer);


 

{prosedur untuk menyisipkan item baru ke dalam}

{arrayint untuk memelihara arrayint dalam keadaan}

{urut secara ascending}


 

var

lokasi,indek:Integer;

begin

if JumlahElemen =1 then

ArrayInt[1] := ItemBaru

else

if ItemBaru > ArrayInt[JumlahElemen-1] then

ArrayInt[JumlahElemen]:=ItemBaru

else

begin

lokasi :=1;

while ItemBaru > ArrayInt[lokasi] do

Lokasi := lokasi+1;

for indek :=JumlahElemen downTo lokasi do

ArrayInt[indek] :=ArrayInt[indek-1];

ArrayInt[lokasi] :=ItemBaru

end;

DaftarArray(ArrayInt,JumlahElemen)

end;


 

begin

{program utama}

{Masukkan data}

write (teks);

readln(DataItem);

JumlahItem :=0;

while DataItem <> 0 do

begin

JumlahItem:=JumlahItem +1;

sisip(ArrayInteger,DataItem,JumlahItem);

write(teks);

readln(DataItem)

end;


 

{Daftar sudah urut}


 

DaftarArray(ArrayInteger,JumlahItem)

end.

program yang sudah jadi dapat di download di Penyisipan

1 comments:

Unknown said...

bubble sort ?