Skip to content

Commit 5526769

Browse files
V1337Qbellshadebot
andauthored
feat: menambahkan algoritma Gnome sort
# Deskripsi (Description) # Checklist: ##### Umum: - [x] Saya menambah algoritma terbaru. - [ ] Saya memperbaiki algoritma yang sudah ada. - [ ] Saya memperbaiki dokumentasi. - [ ] Saya menambah dokumentasi. ##### Contributor Requirements (Syarat Kontributor) dan Lain-Lain: - [x] Saya sudah membaca (I have read) [CONTRIBUTING](https://github.com/bellshade/CPP/blob/main/CONTRIBUTING.md) dan sudah menyetujui semua syarat. - [x] Saya telah menambahkan komentar kode yang memberikan penjelasan maksud dari kode yang saya buat. - [x] Saya menggunakan bahasa Indonesia untuk memberikan penjelasan dari kode yang saya buat. # Environment Saya menggunakan (I'm using): - ``OS`` = `Linux` - ``g++`` = 15.2.1 # Link Issues Issues : # This Commit License https://github.com/bellshade/CPP/blob/main/license Co-authored-by: bellshadebot <bellshade07@gmail.com>
1 parent 129177e commit 5526769

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

algorithm/sorting/gnome_sort.cpp

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
#include <iostream>
2+
#include <vector>
3+
4+
/**
5+
* @file gnome_sort.cpp
6+
* @brief Program sederhana untuk mengurutkan array menggunakan algoritma Gnome
7+
* Sort.
8+
*
9+
* Algoritma Gnome Sort bekerja mirip seperti penyortiran tukang kebun (gnome):
10+
* - Mulai dari elemen pertama
11+
* - Jika elemen saat ini lebih besar dari elemen berikutnya, tukar keduanya
12+
* - Jika tidak, maju ke elemen berikutnya
13+
* - Jika mundur ke elemen sebelumnya, ulangi proses
14+
* - Lanjutkan sampai akhir array
15+
*/
16+
17+
/**
18+
* @brief Mengurutkan array menggunakan algoritma Gnome Sort.
19+
*
20+
* Fungsi ini menerima sebuah array (vector) dan mengurutkannya secara ascending
21+
* menggunakan logika Gnome Sort. Proses pengurutan dilakukan secara
22+
* **in-place**.
23+
*
24+
* @param arr Vector dari integer yang ingin diurutkan.
25+
*/
26+
void gnomeSort(std::vector<int> &arr) {
27+
int index = 0;
28+
int n = arr.size();
29+
30+
while (index < n) {
31+
if (index == 0 || arr[index] >= arr[index - 1]) {
32+
index++;
33+
} else {
34+
std::swap(arr[index], arr[index - 1]);
35+
index--;
36+
}
37+
}
38+
}
39+
40+
int main() {
41+
int size;
42+
std::cout << "Masukkan jumlah elemen array: ";
43+
std::cin >> size;
44+
45+
std::vector<int> arr(size);
46+
std::cout << "Masukkan elemen-elemen array, dipisahkan spasi: ";
47+
for (int i = 0; i < size; i++) {
48+
std::cin >> arr[i];
49+
}
50+
51+
gnomeSort(arr);
52+
53+
std::cout << "Array setelah diurutkan: ";
54+
for (int num : arr) {
55+
std::cout << num << " ";
56+
}
57+
std::cout << "\n";
58+
59+
return 0;
60+
}

0 commit comments

Comments
 (0)