> Dalam ilmu komputer, algoritma pengurutan (sorting adalah):
1. algoritma yang meletakkan elemen-elemen suatu kumpulan data dalam urutan tertentu atau
2. prosees pengurutan data yang sebelumnya disusun secara acak sehingga
menjadi tersusun secara teratur menurut suatu aturan tertentu
menjadi tersusun secara teratur menurut suatu aturan tertentu
>
Yang pada kenyataannya ‘urutan tertentu’ yang umum digunakan adalah
terurut secara numerikal ataupun secara leksikografi (urutan abjad
sesuai kamus)
Yang pada kenyataannya ‘urutan tertentu’ yang umum digunakan adalah
terurut secara numerikal ataupun secara leksikografi (urutan abjad
sesuai kamus)
> Ada 2 jenis sorting : Ascending & Descending
Pengertian/Konsep Buble Sort
Metode pengurutan gelembung (Bubble Sort) diinspirasikan oleh gelembung sabun yang berada dipermukaan air. Karena berat jenis gelembung sabun lebih ringan daripada berat jenis air, maka gelembung sabun selalu terapung ke atas permukaan. Prinsip di atas dipakai pada pengurutan gelembung.Bubble sort (metode gelembung) adalah metode/algoritma pengurutan dengan dengan cara melakukan penukaran data dengan tepat disebelahnya secara terus menerus sampai bisa dipastikan dalam satu iterasi tertentu tidak ada lagi perubahan. Jika tidak ada perubahan berarti data sudah terurut. Disebut pengurutan gelembung karena masing-masing kunci akan dengan lambat menggelembung ke posisinya yang tepat.
Kelebihan Bubble Sort
- Metode Buble Sort merupakan metode yang paling simpel
- Metode Buble Sort mudah dipahami algoritmanya
Kelemahan Bubble Sort
Meskipun simpel metode Bubble sort merupakan metode pengurutanyang paling tidak efisien. Kelemahan buble sort adalah pada saat mengurutkan data yang sangat besar akan mengalami kelambatan luar biasa, atau dengan kata lain kinerja memburuk cukup signifikan ketika data yang diolah jika data cukup banyak. Kelemahan lain adalah jumlah pengulangan akan tetap sama jumlahnya walaupun data sesungguhnya sudah cukup terurut. Hal ini disebabkan setiap data dibandingkan dengan setiap data yang lain untuk menentukan posisinya.Algoritma Bubble Sort
- Membandingkan data ke-i dengan data ke-(i+1) (tepat bersebelahan). Jika tidak sesuai maka tukar (data ke-i = data ke-(i+1) dan data ke-(i+1) = data ke-i). Apa maksudnya tidak sesuai? Jika kita menginginkan algoritme menghasilkan data dengan urutan ascending (A-Z) kondisi tidak sesuai adalah data ke-i > data ke-i+1, dan sebaliknya untuk urutan descending (A-Z).
- Membandingkan data ke-(i+1) dengan data ke-(i+2). Kita melakukan pembandingan ini sampai data terakhir. Contoh: 1 dgn 2; 2 dgn 3; 3 dgn 4; 4 dgn 5 … ; n-1 dgn n.
- Selesai satu iterasi, adalah jika kita sudah selesai membandingkan antara (n-1) dgn n. Setelah selesai satu iterasi kita lanjutkan lagi iterasi berikutnya sesuai dengan aturan ke-1. mulai dari data ke-1 dgn data ke-2, dst.
- Proses akan berhenti jika tidak ada pertukaran dalam satu iterasi.
Contoh Kasus Bubble Sort
Misalkan kita punya data seperti ini: 6, 4, 3, 2 dan kita ingin mengurutkan data ini (ascending) dengan menggunakan bubble sort. Berikut ini adalah proses yang terjadi:Iterasi ke-1: 4, 6, 3, 2 :: 4, 3, 6, 2 :: 4, 3, 2, 6 (ada 3 pertukaran)
Iterasi ke-2: 3, 4, 2, 6 :: 3, 2, 4, 6 :: 3, 2, 4, 6 (ada 2 pertukaran)
Iterasi ke-3: 2, 3, 4, 6 :: 2, 3, 4, 6 :: 2, 3, 4, 6 (ada 1 pertukaran)
Iterasi ke-4: 2, 3, 4, 6 :: 2, 3, 4, 6 :: 2, 3, 4, 6 (ada 0 pertukaran) -> proses selesai
Analisis Algoritma Bubble Sort
Tujuan dari analisis algoritma adalah untuk mengetahui efisiensi
dari algoritma. Dalam hal ini dilakukan pembandingan antara dua atau
lebih algoritma pengurutan.Tahap
analisis adalah melakukan pengecekan program untuk memastikan bahwa
program telah benar secara logika maupun sintak (tahap tracing atau
debugging). Tahap selanjutnya yaitu menjalankan program untuk
mengetahui running time atau waktu komputasi dalam hal ini
termasuk jumlah langkah. Data uji yang digunakan adalah data yang tidak terurut atau data random, terurut membesar/, dan terurut mengecil.
termasuk jumlah langkah. Data uji yang digunakan adalah data yang tidak terurut atau data random, terurut membesar/, dan terurut mengecil.
Salah satu cara untuk menganalisa kecepatan algoritma sorting saat
running time adalah dengan menggunakan notasi Big O. Algoritma sorting
mempunyai kompleksitas waktu terbaik, terburuk, dan rata-rata. Dengan
notasi Big O, kita dapat mengoptimalkan penggunaan algoritma sorting.
Sebagai contoh, untuk kasus dimana jumlah masukan untuk suatu
pengurutan banyak, lebih baik digunakan algoritma sorting seperti quick
sort, merge sort, atau heap sortkarena kompleksitas waktu untuk kasuk
terburuk adalah O(n log n). Hal ini tentu akan sangatberbeda jika kita
menggunakan algoritma sorting insertion sort atau bubble sort dimana
waktu yang dibutuhkan untuk melakukan pencarian akan sangat lama. Hal
ini disebabkan kompleksitas waktu terburuk untuk algoritma sorting
tersebut dengan jumlah masukan yang banyak adalah O(n2).

Contoh program :
#include "stdio.h" #include "conio.h" #define n 7 void main() { int A[n] = {15,10,7,22,17,5,12}; int X, I, K; printf("Sebelum di-sort\n"); for (I=0; I <= n-1; I++) printf("%3i", A[I]); printf("\n"); K=0; while(K<=n-2) { I=0; while(I<=n-2 - K) { if (A[I] > A[I+1]) { X = A[I]; A[I] = A[I+1]; A[I+1] = X; } I++; } K++; } printf("Sesudah di-sort\n"); for (I=0; I<= n-1; I++) printf("%3d", A[I]); } Selection Sort Pengertian dari selection sort adalah mencari elemen yang tepat untuk diletakkan di posisi yang telah diketahui,dan meletakkannya di posisi tersebut setelah data tersebut ditemukan.Selection Sort Membandingkan elemen yang sekarang dengan elemen yang berikutnya sampai dengan elemen yang terakhir. Jika ditemukan elemen lain yang lebih kecil dari elemen sekarang maka dicatat posisinya dan kemudian ditukar. ilustrasi program :![]()
Contoh Program: /*---- METODE ASC SELECTION SORT ----*/ #include <stdio.h> #include <conio.h> void main() { int i, j, iMin; //Deklarasi index untuk array int n, Urut; //Deklarasi untuk banyak data int Tmp; //Tmp penampung elemen array int Arr[50]; //Deklarasi Array //Aplikasi dimulai printf("Inputkan banyak data yang akan diurutkan : "); scanf("%i", &n); //Input array Urut = 1; for(i = 0; i < n; i++) { //Perulangan untuk inputan array printf("Masukan data ke %i : ", i + 1); scanf("%i", &Arr[i]); } //Lakukan sorting ascending dengan metode selection for(i = 0; i < n - 1; i++) { //n - 1 artinya elm terakhir tidak dihitung iMin = i; //Set min = index array for(j = Urut; j < n; j++) { //Lakukan perulangan sebagai pembanding if(Arr[j] < Arr[iMin]) { //Cari data yang kecil iMin = j; //min diganti dengan yang lebih kecil if(Arr[i] != Arr[iMin]) { //Cek untuk data yang berbeda Tmp = Arr[i]; //Tampung Array yang lama if(Arr[i] > Arr[iMin]) { //Jika Array lama lebih besar dari yang baru Arr[i] = Arr[iMin]; //Ganti Array lama dengan Array baru Arr[iMin] = Tmp; //Ganti Array baru dengan Array lama } } } } Urut = Urut + 1; //Tambah urut dengan 1 } //Tampilkan Hasil printf("\nSetelah Pengurutan\n"); for(i = 0; i < n; i++) { //Perulangan untuk tampilan Array printf("Elemen ke %i : %i\n", i + 1, Arr[i]); } getch(); //Tahan tampilan }
No comments:
Post a Comment