补充1个排序:希尔排序
思路:首先定义一个gap,从第0个数开始,每隔一个gap取出一个数,将取出来的数进行比较,方法类似插入排序。第二轮从第二个数开始,每隔一个gap取出一个数再进行插入排序。四轮就可以取完(假如数组有15个数)。之后再将gap倍减,进行前面的步骤,直至gap为1.
代码演示:
#include<iostream>
using namespace std;
int main() {
int i;
int arr[15] = {9,6,11,3,5,12,8,7,10,15,14,4,1,13,2};//初始化数组
for (int gap = 4; gap > 0; gap /=2)//定义一个空隙为4,依次减倍
{
for (int i = gap; i < 15; i++) {
for (int j = i; j >gap - 1; j -= gap) {
//从第0个数开始,每隔4个数进行两两比较
if (arr[j - gap]>arr[j]) {
int temp = arr[j - gap];
arr[j - gap] = arr[j];
arr[j] = temp;//插到前面来(交换值)
}
}
}
}
for (int j = 0; j < 15; j++)//打印数组
{
cout << arr[j] << endl;
}
system("pause");
return 0;
}
原文链接:C++十种排序方法(快速排序、冒泡排序等等)
其他排序方式见下面网站:
c++十大经典排序算法https://blog.csdn.net/zhoujiajie0521/article/details/122183332?ops_request_misc=&request_id=&biz_id=102&utm_term=%E6%8E%92%E5%BA%8Fc++&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~sobaiduweb~default-4-122183332.nonecase&spm=1018.2226.3001.4450