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.
sorting
Tidak ada komentar:
Posting Komentar