-
-
Notifications
You must be signed in to change notification settings - Fork 47
/
Copy pathinsertion_sort.cpp
60 lines (60 loc) · 2.25 KB
/
insertion_sort.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <iostream>
#include <vector>
using namespace std;
//fungsi untuk menampilkan vector setelah sort secara Ascending(terkecil)
void tampilkanAscending(vector<int>& value){
for(int i = 0; i < value.size(); i++){
cout << value[i] << " ";
}
}
//fungsi untuk menampilkan vector setelah sort secara Descending(terbesar)
void tampilkanDescending(vector<int>& value){
for(int i = 0; i < value.size(); i++){
cout << value[i] << " ";
}
}
void InsertionSortAscending(vector<int>& value, int &key){ //insertion sort menaik
for(int i = 1;i < value.size(); i++){
key = value[i]; //inialisasi bilangan kedua merupakan key(kunci)
int j = i - 1; //inialisasi j adalah bilangan pertama
while(j >= 0 && value[j] > key){ //operator logika AND akan true jika kedua input true
/*jka bilangan lebih besar dari 0 dan bilangan lebih besar dari key maka while akan berjalan*/
value[j + 1] = value[j]; // Geser elemen
j = j - 1; //Pindah ke elemen berikutnya di kiri
}
value[j + 1] = key; // Masukkan key pada posisi yang benar
}
}
void InsertionSortDescending(vector<int>& value) { //insertion sort menurun
for(int i = 1; i < value.size(); i++) {
int key = value[i]; // key adalah elemen yang akan disisipkan
int j = i - 1;
// Geser elemen-elemen yang lebih kecil dari key ke kanan
while(j >= 0 && value[j] < key) {
value[j + 1] = value[j]; // Geser elemen
j = j - 1; // Pindah ke elemen berikutnya di kiri
}
value[j + 1] = key; // Masukkan key pada posisi yang benar
}
}
int main(){
int count,input,key;
vector<int> value;
//meminta user untuk memasukkan panjang data(vector)
cout << "Masukkan panjang data: ";
cin >> count;
for(int i = 0;i <= count - 1 ; i++){
cout << "Masukkan data ke " << i + 1 << ": ";
cin >> input;
value.push_back(input);
}
//menampilkan vector setelah sorting
InsertionSortAscending(value,key);
cout << "Data setelah di urut mulai dari terkecil ";
tampilkanAscending(value);
InsertionSortDescending(value);
cout << "\ndata setelah di urut mulai terbesar ";
tampilkanDescending(value);
cin.get();
return 0;
}