一步一步复习数据结构和算法基础-插入排序(2)
来源:互联网 发布:在淘宝roi ppc是什么 编辑:程序博客网 时间:2024/06/05 02:26
希尔排序:
将整个待排记录分割为若干子序列,最后用直接插入排序。
这样可以使关键字比较小的记录跳跃式向前移动。最后直接插入排序的时候数组以基本有序。
#include<stdio.h>#include<stdlib.h>int list[4] = {7,5,3,1};//增量表int t=4;//增量个数void ShellInsert(int *array,int length,int dk){//和插入排序的区别就是增量由1变为dkint i,k;for(i=dk+1;i<=length;i++){if(*(array+i) < *(array+i-dk)){//*array作为监视哨*array = *(array+i);for(k=i-dk;k>0&&(*array < *(array+k));k-=dk)*(array+dk+k) = *(array+k);*(array+k+dk)=*array;}}}void ShellSort(int *array,int length){int k;//对每个增量调用一次函数for(k=0;k<t;k++)ShellInsert(array,length,list[k]);}int main(){int i,length;int *array;scanf("%d",&length);array = (int*)malloc(sizeof(int)*(length+1));if(!array)exit(1);for(i=1;i<=length;i++)scanf("%d",array+i);ShellSort(array,length);for(i=1;i<=length;i++)printf("%d ",*(array+i));printf("\n");free(array);return 0;}
- 一步一步复习数据结构和算法基础-插入排序(2)
- 一步一步复习数据结构和算法基础-插入排序(1)
- 一步一步复习数据结构和算法基础-单链表冒泡排序
- 一步一步复习数据结构和算法基础-冒泡排序
- 一步一步复习数据结构和算法基础-快速排序
- 一步一步复习数据结构和算法基础-堆排序
- 一步一步复习数据结构和算法基础(1)
- 一步一步复习数据结构和算法基础-二叉排序树
- 一步一步复习数据结构和算法基础-双链表
- 一步一步复习数据结构和算法基础-栈和队列(2)
- 一步一步复习数据结构和算法基础-链表(2)
- 一步一步复习数据结构和算法基础-栈的应用(2)
- 一步一步复习数据结构和算法基础-KMP算法
- 一步一步复习数据结构和算法基础--kruskal算法
- 一步一步复习数据结构和算法基础-Floyd算法
- 一步一步复习数据结构和算法基础-dijkstra算法
- 一步一步复习数据结构和算法基础-栈和队列(1)
- 一步一步复习数据结构和算法基础-链表(1)
- CSS 第三课 第四课 笔记
- Android程序运行性能优化
- 经典网站
- hdu 4190 #二分答案
- 关于C语言中的volatile变量
- 一步一步复习数据结构和算法基础-插入排序(2)
- Linux-2.6.20的LCD驱动分析(三)
- android 升级数据库 修改表结构
- JavaBean设置与取得属性
- 覆盖,重载,隐藏
- 基于jquery框架、google chart tools图形报表gvChart的应用心得
- Emacs系列教程
- Linux驱动中,probe函数何时被调用
- textarea在Chrome、FireFox中固定大小