Sorting Dengan Metode Bubble Sort di Pascal

Pada artikel ini, saya memberikan materi tentang sorting dengan metode bubble sort(metode gelembung)
contoh yang menaik : data = 1 4 3 2
hasil = 1 2 3 4

sedangkan contoh yang menurun : data 1 4 3 2
hasil = 4 3 2 1

simple saja bukan :) lets check it out ..

program arh_bsort_menaik;

uses wincrt;

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.



Yang harus diperhatikan adalah koding
if a[j] < a[j-1] then
begin
z:= a[j];
a[j]:= a[j-1];
a[j-1]:=z;
end;
fungsi koding diatas adalah untuk menukarkan posisi dari angka yang ada pada larik. Jika nilai sekarang lebih kecil dari nilai sebelumnya maka tukar posisi array. Maksudnya serpti ini, misalnya kita punya data 1 4 3 ketika yang dicek array indeks ke 2 a[2]=4, akan dibandingkan nilainya dengan array indeks sebelumnya a[2-1]=1, apakah 4 < 1 ? kalau iya ditukar posisinya. Kalau tidak ya gak ditukar.
Selanjutnya pada array indeks ke 3 a[3]=3 dan a[3-1]=4. Apakah 3<4? Iya, barulah dijalankan proses pertukaran tempat/posisi array.

Konsepnya sama seprti algoritma tukar bejana. Dimana kita memiliki sebuah variabel temp yang bernama z.pertama nilai dari larik sekarang (yang ingin dipindahkan) a[i] akan diletakkan pada temp (z). kemudian nilai larik sekarang (a[i]) di isi dengan nilai sebelumnya a[i-1]. Lalu nilai dari a[i-1] di isi nilai z.
Contohnya : nilai a[i]= 4 a[i-1]=3. Maka tahapan pertukarannya adalah
z := 4; a[i]= 3; a[i-1]=4; selesai deh pertukaran dicek dan dilakukan terus sampai angka terurut semua.



Koding untuk bubble sort menurun

program arh_bsort_menurun;

uses wincrt;

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.


Kodingnya sama saja perbedaannya hanya pada tulisan yang berwarna merah.

Komentar

Postingan populer dari blog ini

Monitoring Suhu dan Kelembaban Menggunakan DHT11, NodeMCU, MQTT, Node-Red dan MySQL

[Termux] Nginx sebagai Load Balancer dan Web Server

Bagian-Bagian Motherboard(Mainboard) dan Fungsinya