Selection Sort dalam Bahasa C

Mahir Koding – Selection Sort merupakan salah satu algoritma sorting yang populer dan cukup sering digunakan. Sesuai namanya, algoritma sorting yang satu ini akan melakukan penyeleksian data dari kumpulan data yang belum di sort lalu memasukkannya ke dalam bagian yang sudah di sort. Sudah jelas, dalam tahap penyeleksiannya juga terjadi searching data selanjutnya yang akan di masukkan dalam sorted list.

Salah satu bentuk implementasinya adalah saat melakukan baris berbaris dari siswa yang terpendek hingga tertinggi. Pasti kita akan mencari yang terpendek lalu siswa tersebut masuk ke barisan. Dilanjutkan lagi dengan siswa yang kedua terpendek, memasuki barisan. Begitu selanjutnya..

Untuk mencari siswa terpendek, dilakukan searching. Oleh karena itu, algoritma selection sort juga disebut sebagai algoritma hasil penggabungan sorting dan searching.

Selection Sort disukai karena kesederhanaan algoritmanya dan performanya yang lebih bagus dari beberapa algoritma lain yang lebih rumit. Algoritma ini dapat di ilustrasikan bekerja seperti dibawah ini:
  • Pertama cari data terkecil (data dengan nilai terkecil) dari semua data. kemudian ditukar nilainya dengan data pertama.
  • Kemudian cari data terkecil dari data kedua sampai data yang terakhir, kemudian ditukar nilainya dengan data kedua (data terkecil kedua ditukan posisinya dengan data kedua).
  • Kemudian cari data terkecil dari data ketiga sampai data terakhir, lalu tukar nilainya dengan data yang ketiga.
  • Begitu seterusnya sampai semua data menjadi terurut. Apabila ada N buah data yang akan kita diurutkan, maka kita butuh N-1 langkah pengurutan, dengan data yang terakhir, yaitu data ke N tidak perlu diurutkan sebab nilainya sudah pasti yang terkecil.

http://darcy.rsgc.on.ca/ACES/ICS3U/images/SelectionSortWilson.gif

Contoh source code selection sort menggunakan bahasa C :

#include <stdio.h>

//inisialisasi data
int angka[10]={6,6,2,5,8,1,7,3,4,1};

void main(){
	//looping sebanyak jumlah data
	for(int i=0; i<10; i++){
		//anggap saja bahwa index ke i adalah angka terkecil
		int indexNilaiMinimal=i;
		//looping untuk mencari index/posisi angka yang terkecil
		//caranya adalah membandingkan angka satu per satu
		for(int j=i; j<10; j++){
			//jika ada yang lebih kecil dari angka index ke indexNilaiMinimal
			if(angka[j]<angka[indexNilaiMinimal]){
				//maka, ganti indexNilaiMinimal menjadi index angka tersebut
				indexNilaiMinimal=j;
			}
		}
		//swap value (tukar)
		int temp=angka[i];
		angka[i]=angka[indexNilaiMinimal];
		angka[indexNilaiMinimal]=temp;
	}
	//cetak data
	for(int i=0; i<10; i++){
		printf("%d ", angka[i]);
	}
	getchar();
}

Jika ada pertanyaan yang kurang jelas silahkan berkomentar di bawah. Atau, jika ingin request tutorial juga dapat ke halamanĀ ini. Dukung terus Mahir Koding agar dapat selalu mengupdate artikel dengan share dan like artikel ini. Terima Kasih.