Skip to content

Commit a94c651

Browse files
authored
feat: menambahkan algoritma selection sorting (#21)
* chore: menambahkan algoritma linear searching * chore: Menambahkan algoritma linear searching * feat: menambahkan algoritma selection sorting
1 parent 4ad4400 commit a94c651

File tree

1 file changed

+91
-0
lines changed

1 file changed

+91
-0
lines changed

algoritma/sorting/selection_sort.c

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
/**
2+
* @file selection_sort.c
3+
* @brief implementasi algoritma selection sort.
4+
*
5+
* file ini berisi fungsi selection sort untuk mengurutkan array integer
6+
* dan fungsi untuk mencetak array.
7+
* */
8+
9+
#include <stdio.h>
10+
11+
/**
12+
* @brief fungsi sederhana untuk menukar nilai dari 2 variabel
13+
*
14+
* @param int *x
15+
* @param int *y
16+
*
17+
* @return void
18+
**/
19+
20+
void swap(int *x, int *y) {
21+
int tmp;
22+
23+
tmp = *x;
24+
*x = *y;
25+
*y = tmp;
26+
}
27+
28+
/**
29+
* @brief mengurutkan array integer menggunakan insertion sort.
30+
*
31+
* Fungsi ini mengimplementasikan
32+
* - in-place
33+
* - mencari elemen paling kecil dalam array yang belum terurut
34+
* dan menukar posisi elemen tersebut dengan elemen pertama
35+
* - mengulang proses tersebut sampai semua elemen berurutan,
36+
* dalam kasus ini dari yang terkecil sampai yang terbesar
37+
*
38+
* @param array Array integer yang akan diurutkan.
39+
* @param jumlah_elemen berupa integer dari array.
40+
*
41+
*
42+
* @return void
43+
* */
44+
45+
void selection_sort(int *array, int jumlah_elemen) {
46+
int indeks_i, indeks_j, min_j;
47+
48+
for (indeks_i = 0; indeks_i < jumlah_elemen - 1; indeks_i++) {
49+
min_j = indeks_i;
50+
51+
for (indeks_j = indeks_i + 1; indeks_j < jumlah_elemen; indeks_j++) {
52+
if (array[indeks_j] < array[min_j])
53+
min_j = indeks_j;
54+
}
55+
56+
if (min_j != indeks_i)
57+
swap(&array[indeks_i], &array[min_j]);
58+
}
59+
}
60+
61+
/**
62+
* @brief fungsi sederhana untuk mencetak keluaran dari array.
63+
*
64+
* @param array Array integer yang akan dicetak.
65+
* @param jumlah_elemen berupa integer dari array.
66+
*
67+
* @return void
68+
**/
69+
70+
void cetak_array(int array[], int jumlah_elemen) {
71+
for (int i = 0; i < jumlah_elemen; ++i) {
72+
printf("%d ", array[i]);
73+
}
74+
printf("\n");
75+
}
76+
77+
int main() {
78+
int array[10] = {3, 2, 6, 1, 7, 4, 9, 0, 5, 8};
79+
80+
printf("Bentuk array sebelum diurutkan: ");
81+
cetak_array(array, 10);
82+
printf("\n");
83+
84+
selection_sort(array, 10);
85+
86+
printf("Bentuk array setelah diurutkan: ");
87+
cetak_array(array, 10);
88+
printf("\n");
89+
90+
return 0;
91+
}

0 commit comments

Comments
 (0)