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] | 23 | 2 | 2 | 2 | ||
Data [3] | 23 | 23 | 16 | |||
Data [4] | 80 | 23 | ||||
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:
bubble sort ?
Post a Comment