1+ /* *
2+ * @file insertion_sort.cpp
3+ *
4+ * @author Muh Yusuf
5+ *
6+ * @date July 2025
7+ *
8+ * @brief Program untuk mengurutkan data menggunakan algoritma Insertion Sort (naik dan turun).
9+ *
10+ * Program ini meminta pengguna memasukkan sejumlah bilangan bulat, lalu mengurutkan data
11+ * tersebut dua kali: pertama secara menaik (ascending), lalu secara menurun (descending).
12+ * Hasilnya akan ditampilkan di terminal.
13+ */
114#include < iostream>
215#include < vector>
316using namespace std ;
4- // fungsi untuk menampilkan vector setelah sort secara Ascending(terkecil)
5- void tampilkanAscending (vector<int >& value){
6- for (int i = 0 ; i < value.size (); i++){
7- cout << value[i] << " " ;
17+ /* *
18+ * @brief Menampilkan elemen-elemen vector.
19+ *
20+ * @param value Vector integer yang sudah di sort.
21+ *
22+ * Menggunakan range-based loop dan `const reference` agar efisien.
23+ */
24+ void tampilkan (const vector<int >& value){
25+ for (const auto x: value){
26+ cout << x << " " ;
827 }
928}
10- // fungsi untuk menampilkan vector setelah sort secara Descending(terbesar)
11- void tampilkanDescending (vector<int >& value){
12- for (int i = 0 ; i < value.size (); i++){
13- cout << value[i] << " " ;
14- }
15- }
16- void InsertionSortAscending (vector<int >& value, int &key){ // insertion sort menaik
29+ /* *
30+ * @brief Mengurutkan elemen vector secara menaik (terkecil ke terbesar).
31+ *
32+ * @param value Vector integer yang akan diurutkan.
33+ * @param key Variabel untuk menyimpan nilai sementara (key).
34+ *
35+ * Menggunakan algoritma Insertion Sort. Setiap iterasi menyisipkan `key` ke posisi yang tepat
36+ * dengan menggeser elemen-elemen yang lebih besar ke kanan.
37+ */
38+ void InsertionSortAscending (vector<int >& value){ // insertion sort menaik
39+ int key;
1740 for (int i = 1 ;i < value.size (); i++){
1841 key = value[i]; // inialisasi bilangan kedua merupakan key(kunci)
1942 int j = i - 1 ; // inialisasi j adalah bilangan pertama
@@ -25,6 +48,14 @@ void InsertionSortAscending(vector<int>& value, int &key){ //insertion sort men
2548 value[j + 1 ] = key; // Masukkan key pada posisi yang benar
2649 }
2750}
51+ /* *
52+ * @brief Mengurutkan elemen vector secara menurun (terbesar ke terkecil).
53+ *
54+ * @param value Vector integer yang akan diurutkan.
55+ *
56+ * Insertion Sort dalam urutan descending: menyisipkan `key` di posisi yang benar
57+ * dengan menggeser elemen yang lebih kecil ke kanan.
58+ */
2859void InsertionSortDescending (vector<int >& value) { // insertion sort menurun
2960 for (int i = 1 ; i < value.size (); i++) {
3061 int key = value[i]; // key adalah elemen yang akan disisipkan
@@ -37,24 +68,35 @@ void InsertionSortDescending(vector<int>& value) { //insertion sort menurun
3768 value[j + 1 ] = key; // Masukkan key pada posisi yang benar
3869 }
3970}
71+ /* *
72+ * @brief Fungsi utama program.
73+ *
74+ * @return int Status keluar dari program.
75+ *
76+ * Alur program:
77+ * - Meminta input jumlah elemen
78+ * - Input data elemen
79+ * - Melakukan sorting ascending dan menampilkan hasilnya
80+ * - Melakukan sorting descending dan menampilkan hasilnya
81+ */
4082int main (){
4183 int count,input,key;
42- vector<int > value;
4384 // meminta user untuk memasukkan panjang data(vector)
4485 cout << " Masukkan panjang data: " ;
4586 cin >> count;
87+ vector<int > value (count);
4688 for (int i = 0 ;i <= count - 1 ; i++){
4789 cout << " Masukkan data ke " << i + 1 << " : " ;
48- cin >> input ;
49- value. push_back (input);
90+ cin >> value[i] ;
91+
5092 }
5193 // menampilkan vector setelah sorting
52- InsertionSortAscending (value,key );
94+ InsertionSortAscending (value);
5395 cout << " Data setelah di urut mulai dari terkecil " ;
54- tampilkanAscending (value);
96+ tampilkan (value);
5597 InsertionSortDescending (value);
5698 cout << " \n data setelah di urut mulai terbesar " ;
57- tampilkanDescending (value);
99+ tampilkan (value);
58100 cin.get ();
59101 return 0 ;
60102}
0 commit comments