排序算法(插入排序)——希尔插值排序

//希尔排序算法(不稳定的排序算法,时间复杂度为O(n))
void ShellValue(int a[], int n, int dk)
{
for (int i = dk; i < n; ++i)
{
//在某一区间段内进行直接插入排序算法
if (a[i] < a[i-1])
{
int x = a[i];
int j = i-1;
a[i] = a[i-1];
while(x <a[j]){
a[j+1] = a[j];
j--;
}
a[j+1] = x;
//cout << "ShellValue" <<endl;
print(a,8,i);
}
}
}
//希尔排序算法取值
void ShellSort(int a[],int n)
{
int dk = n/2;
//int i = 1;
while(dk >= 1){
cout << dk <<endl;
ShellValue(a,n,dk);
//print(a,8,dk);
dk = dk/2;
}
}

int _tmain(int argc, _TCHAR* argv[])
{
int a[8] = {32,13,54,73,28,46,91,65};
print(a,8,0);  //打印出初始值
//InsertSort(a,8); //直接插入排序算法
ShellSort(a,8);


return 0;

}

排序算法(插入排序)——希尔插值排序