http://en.wikipedia.org/wiki/Bubble_sort |
Fungsi penukaran:
void tukar(int* x, int* y) { int temp = *x; *x = *y; *y = temp; }
Algoritma fungsi bubble sort:
// mengecek keseluruhan elemen dan dilakukan pengulangan hingga terurut // inisialisasi variabel penukaran menjadi 0,
// sebagai penanda bahwa tidak ada penukaran sebelumnya.
// mengecek dua buah elemen hingga ujung array
// jika elemen di sebelah kiri lebih besar dari elemen di sebelah kanan,
// maka terjadi penukaran // inisialisasi variabel penukaran menjadi 1,
// sebagai penanda bahwa terjadi penukaran. // pengurutan terjadi selama terjadi penukaran pada setiap loop.
Menerjemahkan algoritma tersebut ke bahasa pemrograman C:
int penukaran;
// mengecek keseluruhan elemen dan dilakukan pengulangan hingga terurut do { // inisialisasi variabel penukaran menjadi 0,
// sebagai penanda bahwa tidak ada penukaran sebelumnya. penukaran = 0; } while (penukaran) // pengurutan terjadi selama ada penukaran pada setiap loop.
// mengecek dua buah elemen hingga ujung array for (int i = 0; i < length - 1; i++) { // jika elemen di sebelah kiri lebih besar dari elemen di sebelah kanan,// maka terjadi penukaran if (array[i] > array[i + 1]) { tukar(&array[i], &array[i + 1]); // inisialisasi variabel penukaran menjadi 1,// sebagai penanda bahwa terjadi penukaran penukaran = 1; } }
Fungsi jadi:
void bubble_sort(int array[], int length) {
int penukaran;
// mengecek keseluruhan elemen dan dilakukan pengulangan hingga terurut
do { // inisialisasi variabel penukaran menjadi 0,
// sebagai penanda bahwa tidak ada penukaran sebelumnya. penukaran = 0; // mengecek dua buah elemen hingga ujung array for (int i = 0; i < length - 1; i++) { // jika elemen di sebelah kiri lebih besar dari elemen di sebelah kanan,
// maka terjadi penukaran if (array[i] > array[i + 1]) { tukar(&array[i], &array[i + 1]); // inisialisasi variabel penukaran menjadi 1,
// sebagai penanda bahwa terjadi penukaran penukaran = 1; } } } while (penukaran); // pengurutan terjadi selama ada penukaran pada setiap loop. }
Program jadi:
#include <stdio.h> void tukar(int* x, int* y) { int temp = *x; *x = *y; *y = temp; } void bubble_sort(int array[], int length) { int penukaran; // mengecek keseluruhan elemen dan dilakukan pengulangan hingga terurut do { // inisialisasi variabel penukaran menjadi 0,
// sebagai penanda bahwa tidak ada penukaran sebelumnya. penukaran = 0; // mengecek dua buah elemen hingga ujung array for (int i = 0; i < length - 1; i++) { // jika elemen di sebelah kiri lebih besar dari elemen di sebelah kanan,
// maka terjadi penukaran if (array[i] > array[i + 1]) { tukar(&array[i], &array[i + 1]); // inisialisasi variabel penukaran menjadi 1,
// sebagai penanda bahwa terjadi penukaran penukaran = 1; } } } while (penukaran); // pengurutan terjadi selama ada penukaran pada setiap loop. } int main() { // input jumlah elemen; int num; printf("Input jumlah elemen: "); scanf("%d", &num); // input elemen-elemen data int data[num]; for (int i = 0; i < num; i++) { printf("Elemen %d: ", i); scanf("%d", &data[i]); } // lakukan pengurutan bubble_sort(data, num); // tampilkan hasil pengurutan for (int i = 0; i < num; i++) { printf("%d ", data[i]); } return 0; }
Animasi bubble sort
1 comments:
Artikelnya menarik kak, ini saya juga punya artikel tentang Bubble Sort, semoga dapat saling melengkapi
ReplyBubble Sort dalam Bahasa C (Materi + Koding)
Post a Comment