<菜鸟学算法-A排序(shell排序)>
来源:互联网 发布:软件融合器 编辑:程序博客网 时间:2024/05/15 23:45
希尔排序是一种插入排序算法,它出自D.L.Shell,因此而得名。Shell排序又称作缩小增量排序。
先取一个小于n的整数k作为第一个增量,把文件的全部记录分成k1个组。所有距离为k1的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量k2<k1重复上述的分组和排序,直至所取的增量kt=1(kt<kt-1<;…<k2<k1),即所有记录放在同一组中进行直接插入排序为止.
/* ============================================================================ Name : shell_sort.c Author : braveboyny Version : Copyright : Your copyright notice Description : shell sort in C, Ansi-style ============================================================================ */#include <stdio.h>#include <stdlib.h>void shell_sort(int array[],int n){inti,j,k;int temp;k=n;do{k=k/2; /*设定分组的大小,即下标相差k的数属于一组*/for(i=k;i<n;i++){if(array[i]>array[i-k]) /*这是提高效率的关键;若待插入的数 *已大于组中最大的数就不用做任何操作 直接进入下一组*/continue;j=i-k; /*下面是标准的插入排序, *把k换成1是不是有种很熟系的感觉*/temp=array[i];while(j>=0&&array[j]>temp){array[j+k]=array[j];j=j-k;}array[j+k]=temp;}}while(k);}int main(void) {int array[10]={8,6,3,2,5,4,7,1,9,0};int i;shell_sort(array,10);for(i=0;i<10;i++)printf("%d\t",array[i]);printf("\n");return 0;}//out:0 1 2 3 4 5 6 7 8 9
0 0
- <菜鸟学算法-A排序(shell排序)>
- <菜鸟学算法-A排序(插入排序)>
- <菜鸟学算法-A排序(冒泡排序)>
- <菜鸟学算法-A排序(计数排序)>
- <菜鸟学算法-A排序(选择排序)>
- 菜鸟学排序算法
- <菜鸟学算法-A排序(分治的思想:归并排序)>
- <菜鸟学算法-A排序(分治的思想:快速排序)>
- <菜鸟学算法-A排序(分治的思想:堆排序)>
- 菜鸟学算法-----堆排序
- 菜鸟学排序----冒泡排序
- 菜鸟学排序----插入排序
- 菜鸟学排序----快速排序
- 菜鸟学排序----希尔排序
- 菜鸟学排序:快速排序
- 菜鸟学排序:冒泡排序
- 排序算法---Shell排序
- 排序算法--shell排序
- MongoDB_08之二维索引
- CCSpriteBatchNode(精灵池 open draw draw。。。。。close)
- Vmware Tools怎么安装
- CCSprite
- 优盘安装Windows 7、8系统
- <菜鸟学算法-A排序(shell排序)>
- 1.3 Debugging of Shaders (调试着色器)
- 一次心惊肉跳的服务器误删文件的恢复过程
- CCAnimationCache(动画存储池addAnimation removeAnimationByName animationByName addAnimationsWithDictionary
- Tweak the Dock
- lua的简单对象实现以及简单继承
- POJ1088
- 【Android】Handler机制源码详解(一)
- CCAnimation(CCAnimationFrame:m_fDelayUnits m_pUserInfo。 CCAnimation:)