-
Notifications
You must be signed in to change notification settings - Fork 255
/
Copy path17 Shellsort.cpp
59 lines (51 loc) · 1 KB
/
17 Shellsort.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
#include <iostream>
using namespace std;
struct Array
{
int* A;
int size;
int length;
};
void Display(struct Array* arr)
{
int i;
cout << "The elements of the array is " << endl;
for (i = 0; i < arr->length; i++)
cout << arr->A[i] << " ";
}
void ShellSort(struct Array* A, int n)
{
int gap, i, j, temp;
for (gap = n / 2; gap >= 1; gap /= 2)
{
for (i = gap; i < n; i++)
{
temp = A->A[i];
j = i - gap;
while (j >= 0 && A->A[j] > temp)
{
A->A[j + gap] = A->A[j];
j = j - gap;
}
A->A[j + gap] = temp;
}
}
}
int main()
{
struct Array arr;
cout << "Enter the size of the Array" << endl;
cin >> arr.size;
arr.A = new int[arr.size];
int no, i;
cout << "Enter the length of the Array " << endl;
cin >> no;
arr.length = 0;
cout << "Enter the elements of the Array" << endl;
for (i = 0; i < no; i++)
cin >> arr.A[i];
arr.length = no;
ShellSort(&arr,no);
Display(&arr);
return 0;
}