希尔排序
理解方面:希尔排序本质上就是插入排序,不过就是多了个增量的概念,希尔排序会对增量为间隔的数组元素进行插入排序,使得数组内的元素带有一定的顺序。
#include <iostream>
#include <time.h>
#include <string.h>
using namespace std;
void print(int a[], int b)
{
for(int i = 0; i < b; i++)
{
cout << a[i] << " ";
}
cout << endl;
}
int main()
{
int a[10];
int d = 5;
srand((unsigned)time(NULL));
for(int i = 0; i < 10; i++)
{
a[i] = rand() % 100;
cout << a[i] << " ";
}
cout << endl;
while(d >= 1)
{
for (int i = 0; i < 10 - d; i++)
{
int j = i + d;
int tmp = a[j];
while (tmp < a[j - d] && j - d >= 0)
{
a[j] = a[j - d];
j = j - d;
}
a[j] = tmp;
}
d = d / 2;
}
print(a, 10);
return 0;
}