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