#include <iostream>
using namespace std;
class ShellSort {
public:
int* shellSort(int* A, int n) {
// write code here
for(int gap = n / 2; gap > 0; gap /= 2){
for(int index_beg = 0; index_beg < gap; index_beg++){
insertionSort(A, n, gap, index_beg);
}
}
return A;
}
void insertionSort(int* A, int n, int gap, int index_beg) {
// write code here
int tmp;
int index_insert;
for(int index = index_beg+gap; index < n; index += gap){
index_insert = index;
while(A[index_insert] < A[index_insert - gap] && index_insert >= gap){
tmp = A[index_insert];
A[index_insert] = A[index_insert - gap];
A[index_insert - gap] = tmp;
index_insert-=gap;
}
}
}
};
int main()
{
int a[6] = {1, 5, 7, 4, 2, 9};
int* res;
ShellSort sorter;
res = sorter.shellSort(a, 6);
cout<<"after sorting:"<<endl;
for(int i = 0; i < 6; i++){
cout<<a[i]<<" ";
}
cout<<endl;
return 0;
}