插入排序高效改进之希尔排序
来源:互联网 发布:macbook免费清理软件 编辑:程序博客网 时间:2024/06/05 12:39
希尔排序,也叫递减增量排序,是插入排序的一种更高效的改进版本,是不稳定的排序算法。
希尔排序是基于插入排序的以下两点性质而提出改进方法的:
1、插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率
2、但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位
希尔排序通过将要排序的全部元素分为几个区域来提升插入排序的性能,让需要移动的数向要移动的方向一次走一大步。然后取越来越小的步长进行排序,最后进行一次普通的插入排序,此时需排序的数几乎已经是排好的了,插入排序较快#include <stdio.h>void printA(int *a,int len){int i;for(i = 0; i < len; i++){printf("%4d",a[i]);}printf("\n");}void shell(int *a, int len){int i,j,get;int d = len;do{d = d/3+1; //每次的步长for(i = d; i < len; i++){get = a[i];j = i-d;while(j >= 0 && a[j] > get){a[j+d] = a[j];j = j-d;}a[j+d] = get;}}while(d>1);}int main(){int a[10] = {7,2,9,4,1,3,8,6,5,0};int len = sizeof(a)/sizeof(a[0]);shell(a,len);printA(a,len);return 0;}
阅读全文
0 0
- 插入排序高效改进之希尔排序
- 插入排序的改进2:希尔排序
- 插入排序之希尔排序
- 插入排序之希尔排序
- 插入排序之希尔排序
- 插入排序之希尔排序
- 插入排序之希尔排序
- 插入排序之希尔排序
- 插入排序之希尔排序
- 插入排序之希尔排序
- 插入排序之希尔排序
- 插入排序之希尔排序
- 插入排序之希尔排序
- 插入排序之希尔排序
- 插入排序之--希尔排序
- 插入排序之希尔排序
- 插入排序之希尔排序
- 插入排序之希尔排序
- 【POI2011】 Meteors 整体二分(写代码时的坑点)
- php_lang_ref:Language Reference >> Functions >> Anonymous functions
- 股市行情大盘走势最新解读 抢先布局选股有妙招
- 二叉树非递归遍历(C++)
- Linux Device和Driver注册过程的源码流程分析
- 插入排序高效改进之希尔排序
- ArrayList源码分析
- HTML(4)
- python接口自动化测试(一)
- c++ 各进制赋值、int/char转换、sscanf/sprintf、位操作运算
- TCP/IP协议栈的基本工作原理
- leetcode(287). Find the Duplicate Number
- 文件上传下载异常
- 八皇后问题