Modul 10 : Bubble Sort - fzl-22/modul-alpro-informatika GitHub Wiki

Sorting

Sorting Merupakan suatu proses untuk mengatur dimana posisi suatu data seharusnya atau dapat didefinisikan sebagai proses mengurutkan data berdasarkan nilai tertentu. Sorting dapat dilakukan dari nilai terkecil ke nilai terbesar ataupun sebaliknya. Sorting dapat dibedakan menjadi dua yaitu Comparasion Sort (Bubble sort, Selection Sort, Insertion Sort, Merge Sort, Quick Sort) dan Non-Comparasion Sort (Radix Sort, Counting Sort). Comparasion Sort / pengurutan dengan perbandingan adalah algoritma yang dalam proses pengurutannya melakukan perbandingan antar data. Non-Comparasion Sort / pengurutan tanpa perbandingan adalah algoritma pengurutan dimana dalam prosesnya tidak melakukan perbandingan antar data. Pada mata kuliah Algoritma dan Pemograman ini akan mempelajari mengenai Comparasion Sort

Bubble Sort

Pengertian Bubble Sort

Algoritma Bubble Sort Merupakan salah satu bentuk pengurutan yang menerapkan pertukaran data atau nilai pada prosesnya. Proses pertukaran data / nilai tersebut dilakukan dengan menukarkan dua data atau nilai yang berdekatan apabila urutan nilainya salah. Algoritma ini dapat mengurutkan nilai dari nilai yang paling besar ke nilai yang paling kecil atau biasanya disebut Descending dan juga dapat mengurutkan nilai dari nilai terkecil ke nilai yang besar atau disebut Ascending. Jadi Algoritma bubble sort adalah proses pengurutan yang secara bertahap memindahkan data ke lokasi yang benar. Oleh karena itu, algoritma ini disebut β€œBubble” atau dalam bahasa Indonesia disebut gelembung.

Ilustrasi Bubble Sort


Gimana ? Apa kalian sudah paham dengan Ilustrasi diatas? Apabila belum bisa memahaminya, mari kita bedah satu persatu iterasi atau proses berjalannya ilustrasi diatas.
Kita Punya data [6,5,3,1,8,7,2,4] dan kita akan mengurutkan dengan metode Ascending

Iterasi 1:
5, 6, 3, 1, 8, 7, 2, 4 β†’ Terjadi Pertukaran
5, 3, 6, 1, 8, 7, 2, 4 β†’ Terjadi Pertukaran
5, 3, 1, 6, 8, 7, 2, 4 β†’ Terjadi Pertukaran
5, 3, 1, 6, 8, 7, 2, 4 β†’ Tidak Terjadi Pertukaran
5, 3, 1, 6, 7, 8, 2, 4 β†’ Terjadi Pertukaran
5, 3, 1, 6, 7, 2, 8, 4 β†’ Terjadi Pertukaran
5, 3, 1, 6, 7, 2, 4, 8 β†’ Terjadi Pertukaran

Iterasi 2:
3, 5, 1, 6, 7, 2, 4, 8 β†’ Terjadi Pertukaran
3, 1, 5, 6, 7, 2, 4, 8 β†’ Terjadi Pertukaran
3, 1, 5, 6, 7, 2, 4, 8 β†’ Tidak Terjadi Pertukaran
3, 1, 5, 6, 7, 2, 4, 8 β†’ Tidak Terjadi Pertukaran
3, 1, 5, 6, 2, 7, 4, 8 β†’ Terjadi Pertukaran
3, 1, 5, 6, 2, 4, 7, 8 β†’ Terjadi Pertukaran

Iterasi 3:
1, 3, 5, 6, 2, 4, 7, 8 β†’ Terjadi Pertukaran
1, 3, 5, 6, 2, 4, 7, 8 β†’ Tidak Terjadi Pertukaran
1, 3, 5, 6, 2, 4, 7, 8 β†’ Tidak Terjadi Pertukaran
1, 3, 5, 2, 6, 4, 7, 8 β†’ Terjadi Pertukaran
1, 3, 5, 2, 4, 6, 7, 8 β†’ Terjadi Pertukaran

Iterasi 4:
1, 3, 5, 2, 4, 6, 7, 8 β†’ Tidak Terjadi Pertukaran
1, 3, 5, 2, 4, 6, 7, 8 β†’ Tidak Terjadi Pertukaran
1, 3, 2, 5, 4, 6, 7, 8 β†’ Terjadi Pertukaran
1, 3, 2, 4, 5, 6, 7, 8 β†’ Terjadi Pertukaran

Iterasi 5:
1, 3, 2, 4, 5, 6, 7, 8 β†’ TIdak Terjadi Pertukaran
1, 2, 3, 4, 5, 6, 7, 8 β†’ Terjadi Pertukaran
1, 2, 3, 4, 5, 6, 7, 8 β†’ Tidak Terjadi Pertukaran

Iterasi 6:
1, 2, 3, 4, 5, 6, 7, 8 β†’ Tidak Terjadi Pertukaran
1, 2, 3, 4, 5, 6, 7, 8 β†’ Tidak Terjadi Pertukaran

Iterasi 7:
1, 2, 3, 4, 5, 6, 7, 8 β†’ Tidak Terjadi Pertukaran

Jadi, hasil akhir deretan bilangan di atas setelah diurutkan dengan algoritma Bubble Sort secara Ascending ialah [1, 2, 3, 4, 5, 6, 7, 8]

Setelah melihat Ilustrasi di atas dapat disimpulkan bahwa algoritma Bubble Sort ini merupakan metode pengurutan yang paling sederhana dan sangat mudah untuk dipahami, namun meskipun dianggap sederhana, metode ini termasuk dalam metode yang paling tidak efisien karena proses pengurutan data dilakukan satu persatu mulai dari data paling kiri sampai data yang terakhir. Jika kita memiliki data yang sangat banyak atau dalam jumlah yang besar, maka prosesnya akan semakin lama dan lambat karena proses pengurutan datanya dilakukan satu per satu.

Contoh Bubble Sort

#include <stdio.h>
#include <stdlib.h>
#define size 5

void bubbleSort(int *arr){
   for(int i = 0; i < size - 1; i++){
      int temp;
      for (int j = 0; j < size - 1 - i; j++){
	 if(arr[j] > arr[j+1]){
	    temp = arr[j];
	    arr[j] = arr[j+1];
	    arr[j+1] = temp;
	 }
      }
   }
}

void outputNilai(int *arr){
   for(int i = 0; i < size; i++){
	printf("%d ", arr[i]);
   }
}

int main()
{
   int a[size] = {5, 7, 2, 9, 1};
   outputNilai(a);
   bubbleSort(a);
   printf("\nSorting : \n");
   outputNilai(a);
	
   return (0);
}

Buble Sort VS Quick Sort

Contoh Bubble Sort (String)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct
{
	char nama[100];
}blackpink;

int main()
{
	blackpink member[4] = {"Jennie", "Rose", "Lisa", "Jisoo"};
	blackpink temp;
	for(int i = 0; i < 4; i++){
		printf("%s ", member[i].nama);
	}

	printf("\n\n");
	for(int i = 0; i < 4 - 1; i++){
		for (int j = 0; j < 4 - i - 1; j++){
			if(strcmp(member[j].nama,member[j+1].nama)>0){
				temp = member[j];
				member[j] = member[j+1];
				member[j+1] = temp;
            }
		}
	}

	for(int i = 0; i < 4; i++){
		printf("%s ", member[i].nama);
	}
	
	return 0;
}

Keterangan :

  • <string.h> merupakan library yang menyimpan fungsi-fungsi yang digunakan untuk menangani string ataupun substring.
  • tipe data Struct dapat dipelajari pada link ini.
  • strcmp merupakan fungsi yang ada pada string.h.

Latihan Soal

  1. Buatlah Program Sorting Ascending dan Descending Berdasarkan angka yang diinputkan oleh user!
    Input :

    Masukkan Berapa angka yang dimasukkan : 5          // 5 merupakan inputan
    
    Masukkan Angka
    85
    1
    32
    56
    8
    

    Output

    Ascending        =  1  8  32  56  85
    Descending       =  85  56  32  8  1
    
  2. Buatlah program menu koperasi yang dapat menginputkan nama produk dan harga produk, kemudian dapat menampilkan data tersebut, dan terdapat menu searching untuk mencari data tertentu serta dapat menampilkan hasil sorting dengan menggunakan metode Ascending maupun descending!!
    Note :

    • Anda dapat menggunakan tipe data bentukan (Struct) yang isinya barang dan harga
    • Inputan dari user hanya Barang dan Harga
    • Ascending untuk dua angka terakhir NIM GENAP
    • Descending untuk dua angka terakhir NIM Ganjil

    Menu :

    Menu


    Input Data :

    input1 image image


    Menampilkan Data Koperasi :

    image


    Searching Data Koperasi :

    image

    Sorting Data Koprasi :

    image

⚠️ **GitHub.com Fallback** ⚠️