介绍
希尔排序是一个快速的,且不稳定的排序,基本思想是比较两个相隔jmp大小的元素,具体算法不再多述,具体请见希尔排序算法。
源代码
#include<iostream>
#include <vector>
using namespace std;
void shell_sort(vector<int>& point)
{
int temp, jmp,j;
jmp = point.size() / 2;//希尔排序的间隔
while (jmp)
{
for (int i = jmp; i < point.size(); i++)
{
temp = point[i];
j = i - jmp;
//这里的意思是如果前面已经排好序了,后面有一个位置变动,就会导致前面的都在变动,需要对前面所有的数据重新排列
//其实这里可以看作对某个数据以jmp作为间隔的数组的插入排序
while (j >= 0 && temp < point[j])
{
point[j + jmp] = point[j];
j = j - jmp;
}
point[j + jmp] = temp;
}
jmp = jmp / 2;
}
}
int main()
{
vector<int> point = { 9,7,5,3,4,6};
shell_sort(point);
for (int i = 0; i < point.size(); i++)
{
cout << point[i] << endl;
}
system("pause");
return 0;
}