-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinsertion_sort.cpp
55 lines (52 loc) · 977 Bytes
/
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
#include <iostream>
#include <vector>
int main()
{
int vec_size = 0;
std::cout << "Size = ";
std::cin >> vec_size;
std::vector<int> v;
std::cout << "Elements: ";
for (int i = 0; i < vec_size; i++)
{
int temp = 0;
std::cin >> temp;
v.push_back(temp);
}
//Ascending order
for (int j = 1; j < v.size(); j++)
{
int key = 0, k = 0;
key = v[j];
k = j - 1;
//going left from key untill '0' index
while (k >= 0 && v[k] > key)
{
v[k + 1] = v[k];
k--;
}
v[k + 1] = key;
}
std::cout << "Ascending: ";
for (int l = 0; l < v.size(); l++)
std::cout << v[l] << " ";
std::cout << std::endl;
//Descending order
for (int m = 1; m < vec_size; m++)
{
int key = v[m];
int n = m - 1;
//going left from key untill '0' index
while (n >= 0 && v[n] < key)
{
v[n + 1] = v[n];
n--;
}
v[n + 1] = key;
}
std::cout << "Descending: ";
for (int p = 0; p < v.size(); p++)
std::cout << v[p] << " ";
std::cout << std::endl;
return 0;
}