SORTING C++
- Bubble
     Sort (sederhana tetapi lambat)
- Quick
     Sort (cepat tetapi rumit)
- Selection
     Sort
- Insert
     Sort
- Merge
     Sort
#1 Bubble Sort
Yang pertama kita akan membahas bubble sort. Algoritma ini merupakan
salah satu algoritma pengurutan yang paling sederhana, baik dalam hal
pengertian maupun penerapannya.
Ide dari algoritma bubble sort
adalah mengulang proses pembandingan antara tiap-tiap elemen array dan
menukarnya apabila urutannya salah.
Teknik ini menyusun data yang diinginkan secara berurutan dengan
membandingkan elemen data yang ada dan terus diulang hingga tidak perlu
dilakukan penukaran lagi.
Berikut ini adalah gambaran dari algoritma bubble sort:
  fori:=1toJumlah_data-1do
forj:=i+1toJumlah_datado
ifData[i]>Data[j]then
begin
t:=Data[i];
Data[i]:=Data[j];
Data[j]:=t;
end;
Kita misalkan memiliki 5 angka yang akan kita simpan kedalam
variabel 
Data (Array).
Dengan masing-masing nilai sebagai berikut:
  Data[1] := 3;Data[2] := 1;Data[3] := 4;Data[4] := 2;Data[5] := 6;
Cara Kerja:
1.    Langkah
pertama: 
Data[1] akan dibandingkan dengan Data[2]. Jika Data[1] lebih besar
dari Data[2] maka nilai dari kedua variabel tersebut ditukar posisinya.
2.    
Data[1] akan terus dibandingkan
dengan data-data selanjutnya (Data[3], Data[4], dan Data[5]). Hingga
akhirnya Data[1] berisi nilai terkecil.
3.    Setelah proses
perbandingan 
Data[1] selesai, selanjutnya kita akan membandingkan Data[2] dengan Data[3], Data[4] dan Data[5] seperti proses
sebelumnya.
4.    Begitu seterusnya
sampai semua data selesai di bandingkan.
Berikut adalah conto program pascal dengan agoritma buble sort:
  ProgramBubble_Urutan;
usescrt;
varData:array[1..5]ofinteger;
i,j,t,Jumlah_data:integer;
Begin
Data[1]:=3;
Data[2]:=1;
Data[3]:=4;
Data[4]:=2;
Data[5]:=6;
Jumlah_data:=5;
  writeln('Data Awal:');
fori:=1toJumlah_datado
begin
writeln('Data[',i,'] = ',Data[i]);
end;
  fori:=1toJumlah_data-1do
forj:=i+1toJumlah_datado
ifData[i]>Data[j]then
begin
t:=Data[i];
Data[i]:=Data[j];
Data[j]:=t;
end;
  writeln('Hasil:');
fori:=1toJumlah_datado
begin
writeln('Data[',i,'] = ',Data[i]);
end;
  End.
#2 Quick Short
Algoritma quick short ditemukan oleh E. Hoare. Algoritma ini
menggunakan metode rekursi sampai habis. Prinsipnya membagi data menjadi dua
bagian yang sama (kiri dan kanan).
Dimana data tengah menjadi pivot (pusat operasi). Kemudian kita
akan mengumpukan data dengan nilai lebih kecil dari pivot disebelah kiri pivot,
dan di kanan untuk yang lebih besar.
Karena dimungkinkan bagian kiri dan kanan pivot tidak sama
besarnya. maka dari itu tiap bagian di bagi menjadi dua lagi sehingga mempunyai
pivot yang baru.
  baca:=0;
pusat:=A[(awal+akhir)div2];
kiri:=awal;
kanan:=akhir;
Whilekiri<=kananDo
Begin
WhileA[kiri]<pusatDo
Inc(kiri);
WhileA[kanan]>pusatDo
Dec(kanan);
Ifkiri<=kananThen
Begin
Ganti(A[kiri],A[kanan]);
Inc(kiri);
Dec(kanan);
Inc(baca);
End;
End;
  Ifkanan>awalThen
Urut(awal,kanan);
Ifakhir>kiriThen
Urut(kiri,akhir);
Algoritma Quick Sort juga disebut juga dengan partition Exchange sort karena
konsepnya membuat partisi-partisi, dan sort dilakukan per partisi.
#4 Selection Sort
Algoritma utamanya adalah sebagai berikut:
  baca:=0;
Fori:=1Tom-1Do
Begin
tempat:=i;
Forj:=i+1TomDo
IfA[tempat]>A[j]Then
tempat:=j;
Ganti(A[i],A[tempat]);
Inc(baca);
End;
#5 Insert Sort
Algoritma utamanya adalah sebagai berikut :
  baca:=0;
Fori:=2TomDo
Begin
G:=A[i];
j:=i-1;
A[0]:=G;
WhileG<A[j]Do
Begin
A[j+1]:=A[j];
Dec(j);
Inc(baca);
End;
A[j+1]:=G;
End;
#6 Merge Sort
Algoritma utamanya
  Begin
i:=awal;
k:=awal;
j:=tengah+1;
Repeat
IfA[i]<A[j]Then
Begin
B[k]:=A[i];
Inc(i);
End
Else
Begin
B[k]:=A[j];
Inc(j);
End;
Inc(k);
Inc(baca);
Until(i>tengah)Or(j>akhir);
  Ifi>tengahThen
Fort:=jToakhirDo
Begin
B[k+t-j]:=A[t];
End
Else
Fort:=iTotengahDo
Begin
B[k+t-i]:=A[t];
End;
End;
 
Komentar
Posting Komentar