排序算法门外汉理解-Shell排序
#include <stdio.h>
/* 希尔排序
基本思想:希尔排序又称为缩小增量排序,对简单插入排序的优化。
(外部分组gap,组内部插入排序!
!
)
特点:一种不稳定的排序
*/
void ShellSort(int array[],int len){
int i,j;
int gap;// gap
int temp;
for (gap = len/2 ; gap >0 ; gap = gap/2){ //核心就是 array[j+gap]与 array[j]比較。直到gap=1
for (i = gap; i < len ; i++){ // i: gap ~ <len(i++) 4、3、2、1...
temp = array[i];
for (j = i - gap; j >=0; j-=gap) {// j: i-gap ~ >=0(j=j-gap)
if (temp < array[j]) {
array[j+gap] = array[j]; // 假设待插入元素<前面序列,则后移元素
}
else
break;
}
array[j+gap] = temp; // 空位填上待插入元素就可以
}
}
}
int main(int argc,constchar * argv[])
{
int i =0;
int a[] = {5,4,9,8,7,6,0,1,3,2};
int len =sizeof(a)/sizeof(a[0]);
// 希尔排序
ShellSort(a, len);
for (i =0; i < len; i++) {
printf("%d ",a[i]);
}
printf("\n\n");
return0;
}
版权声明:本文博客原创文章,博客,未经同意,不得转载。
相关文章
- 十大排序算法
- 为了测试未知来源的算法题,我写了一个本地刷题工具!
- 前端算法-岛屿的最大面积 DFS(深度优先搜索) 质数计数
- 凸包多边形最小外切矩形算法
- 排序算法-选择排序详解
- Python 排序与查找算法收集
- 人脸检测和对齐算法MTCNN
- 排序算法
- CSDN蓝桥杯算法题——题解Java版本——切面条
- 二叉树——堆的排序 TOP-K算法
- 【图像配准】多图配准/不同特征提取算法/匹配器比较测试
- NLP专栏简介:数据增强、智能标注、意图识别算法|多分类算法、文本信息抽取、多模态信息抽取、可解释性分析、性能调优、模型压缩算法等
- 二叉搜索树算法详解与Java实现编程语言
- 算法-滑动窗口的最大值详解编程语言
- 常见排序算法及对应的时间复杂度和空间复杂度详解编程语言
- C语言选择排序算法
- 哈希结合Redis实现一致性哈希算法(基于redis一致性)
- Oracle中排序的重要性从序号看排序算法(oracle中排序序号)
- 「星河」算法仓库平台,芯翌科技进击的「刀枪剑戟」
- php排序算法(冒泡排序,快速排序)
- 关于PHP二进制流逐bit的低位在前算法(详解)
- STl中的排序算法详细解析
- 浅析java希尔排序(Shell)算法