MODEL SORTING
Counting Sort
program counting_sort;
uses wincrt;
type
nilai = array[1..50] of integer;
var
nl : nilai;
mindata,maxdata: integer;
jumlah ,i:integer;
procedure isinilai(var nl:nilai; var n:integer);
var
j:integer;
begin
write('banyak data : ');
readln(n);
for j:=1 to n do
begin
write('data ke ',j,' : ');
readln(nl[j]);
end;
end;
procedure minmax(nl:nilai;n:integer;var mindata:integer;var maxdata:integer);
begin
mindata :=nl[1];
maxdata :=nl[1];
for i:=2 to n do
begin
if nl[i] < mindata then mindata :=nl[i];
if nl[i] > maxdata then maxdata :=nl[i];
end;
end;
uses wincrt;
type
nilai = array[1..50] of integer;
var
nl : nilai;
mindata,maxdata: integer;
jumlah ,i:integer;
procedure isinilai(var nl:nilai; var n:integer);
var
j:integer;
begin
write('banyak data : ');
readln(n);
for j:=1 to n do
begin
write('data ke ',j,' : ');
readln(nl[j]);
end;
end;
procedure minmax(nl:nilai;n:integer;var mindata:integer;var maxdata:integer);
begin
mindata :=nl[1];
maxdata :=nl[1];
for i:=2 to n do
begin
if nl[i] < mindata then mindata :=nl[i];
if nl[i] > maxdata then maxdata :=nl[i];
end;
end;
procedure minmax(nl:nilai;n:integer;var mindata:integer;var maxdata:integer);
begin
mindata :=nl[1];
maxdata :=nl[1];
for i:=2 to n do
begin
if nl[i] < mindata then mindata :=nl[i];
if nl[i] > maxdata then maxdata :=nl[i];
end;
end;
procedure countsort(var tabint:nilai;n:integer;mindata:integer;maxdata:integer);
const min=1;max=100;
var
i,j,k:integer;
tabcount:array [min..max] of integer;
begin
for i:=mindata to maxdata do
tabcount[i]:=0;
begin
mindata :=nl[1];
maxdata :=nl[1];
for i:=2 to n do
begin
if nl[i] < mindata then mindata :=nl[i];
if nl[i] > maxdata then maxdata :=nl[i];
end;
end;
procedure countsort(var tabint:nilai;n:integer;mindata:integer;maxdata:integer);
const min=1;max=100;
var
i,j,k:integer;
tabcount:array [min..max] of integer;
begin
for i:=mindata to maxdata do
tabcount[i]:=0;
for i:=1 to n do
tabcount[tabint[i]]:=tabcount[tabint[i]]+1;
k:=0;
for i :=mindata to maxdata do
if tabcount[i]<>0 then
for j:=1 to tabcount[i] do
begin
k:=k+1;
tabint[k]:=i;
end;
end;
procedure cetak(nl:nilai;n:integer);
begin
for i:=1 to n do
write(nl[i],' ');
writeln;
end;
for i:=1 to n do
tabcount[tabint[i]]:=tabcount[tabint[i]]+1;
k:=0;
for i :=mindata to maxdata do
if tabcount[i]<>0 then
for j:=1 to tabcount[i] do
begin
k:=k+1;
tabint[k]:=i;
end;
end;
procedure cetak(nl:nilai;n:integer);
begin
for i:=1 to n do
write(nl[i],' ');
writeln;
end;
pengertian sorting
Sorting merupakan suatu proses untuk menyusun kembali humpunan obyek
menggunakan aturan tertentu. Sorting disebut juga sebagai suatu algoritma untuk
meletakkan kumpulan elemen data kedalam urutan tertentu berdasarkan satu atau
beberapa kunci dalam tiap-tiap elemen. Pada dasarnya ada dua macam urutan yang
biasa digunakan dalam suatu proses sorting:
1. Urut naik (ascending)
1. Urut naik (ascending)
Mengurutkan dari data yang mempunyai nilai paling kecil
sampai paling besar
2. Urut turun
(descending)
Mengurutkan dari data yang mempunyai nilai paling besar
sampai paling kecil.
Mengapa harus melakukan sorting data? Ada banyak alasan dan keuntungan dengan mengurutkan data. Data yang terurut mudah untuk dicari, mudah untuk diperiksa, dan mudah untuk dibetulkan jika terdapat kesalahan. Data yang terurut dengan baik juga mudah untuk dihapus jika sewaktu-waktu data tersebut tidak diperlukan lagi.
contoh program buble
sort dalam bahasa pascal.
Program Bubble_Sort;
Uses WinCrt;
const
max = 100;
type
Larik = array [1..max] of
integer;
varA: Larik;
I: integer;
N: integer;
pil:byte;
procedure Jumlah_Data;
begin
write(‘Masukkan banyaknya data =
‘); readln(N);
writeln;
end;
procedure Input;
var
I: integer;
begin
for I:=1 to N do
begin
write(‘Masukkan data ke-‘, I, ‘
= ‘); readln(A[I]);
end;
end;
procedure Change(var A, B:
integer);
var
T: integer;
begin
T:=A;
A:=B;
B:=T;
end;
procedure asc_buble;
var
p,q :INTEGER;
flag:boolean;
begin
flag:=false;
p:=2;
while (p<N) and (not flag) do
begin
flag:=true;
for q:=N downto p do
if A[q]<A[q-1] then
begin
change(A[q],A[q-1]);
flag:=false;
end;
inc(i);
end;
writeln;
write(‘Data Diurutkan Secara
Ascending: ‘);
end;
procedure desc_buble;
var
p,q :byte;
flag:boolean;
Begin
flag:=false;
p:=2;
while (p<max) and (not flag)
do
begin
flag:=true;
for q:=max downto p do
if A[q]>A[q-1] then
begin
change(A[q],A[q-1]);
flag:=false;
end;
inc(i);
end;
algoritma quick rekursif.
Kode berikut memperlihatkan contoh fungsi rekursif,
untuk menghitung hasil kali dari dua bilangan:
def kali(a, b): return a if b
== 1 else a + kali(a, b - 1)
Bagaimana cara kerja fungsi rekursif ini?
Sederhananya, selama nilai b bukan 1, fungsi akan terus
memanggil perintaha + kali(a, b - 1), yang tiap
tahapnya memanggil dirinya sendiri sambil mengurangi nilai b. Mari kita
coba panggil fungsi kali dan uraikan langkah pemanggilannya
kali(2, 4) -> 2 + kali(2, 3) -> 2 +
(2 + kali(2, 2)) -> 2 + (2 + (2 + kali(2, 1))) -> 2 + (2 + (2 + 2)) ->
2 + (2 + 4) -> 2 + 6 -> 8
Perhatikan bahwa sebelum melakukan
penambahan program melakukan pemanggilan fungsi rekursif terlebih dahulu sampai
fungsi rekursif mengembalikan nilai pasti (2). Setelah menghilangkan semua
pemanggilan fungsi, penambahan baru dilakukan, mulai dari nilai kembalian dari
fungsi yang paling terakhir.
Mari kita lihat contoh fungsi rekursif lainnya, yang
digunakan untuk melakukan perhitungan faktorial:
def faktorial(n): return n if n
== 1 else n * faktorial(n - 1)
Fungsi faktorial memiliki cara kerja yang sama dengan
fungsi kali. Mari kita panggil dan lihat langkah pemanggilannya:
faktorial(5)
-> 5 * faktorial(4) -> 5 * (4 * faktorial(3)) -> 5 * (4 * (3 *
faktorial(2))) -> 5 * (4 * (3 * (2 * faktorial(1)))) -> 5 * (4 * (3 * (2
* 1))) -> 5 * (4 * (3 * 2)) -> 5 * (4 * 6) -> 5 * 24 -> 120
metode-metode
Buble Sort :
Merupakan algoritma pengurutan paling tua dengan metode
pengurutan paling sederhana. Pengurutan yang dilakukan dengan membandingkan
masing-masing item dalam suatu list secara berpasangan,
menukar item jika diperlukan, dan mengulaginya sampai akhir
list secara berurutan, sehingga tidak ada lagi item yang dapat
ditukar.
Selection Sort :
Ide utama dari algoritma selection sort adalah memilih elemen
dengan nilai paling rendah dan menukar elemen yang terpilih dengan elemen ke-i.
Nilai dari i dimulai dari 1 ke n, dimana n adalah
jumlah total elemen dikurangi 1.
Insertion Sort :
Algoritma insertion sort pada dasarnya memilah
data yang akan diurutkan menjadi dua bagian, yang belum diurutkan dan yang
sudah diurutkan. Elemen pertama diambil dari bagian array yang belum diurutkan
dan kemudian diletakkan sesuai posisinya pada bagian lain dari array yang telah
diurutkan. Langkah ini dilakukan secara berulang hingga tidak ada lagi elemen
yang tersisa pada bagian array yang belum diurutkan.
Tidak ada komentar:
Posting Komentar