C++实现希尔排序
介绍
希尔排序是一个快速的,且不稳定的排序,基本思想是比较两个相隔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;
}