排序----希尔排序
来源:互联网 发布:自学java看什么书 知乎 编辑:程序博客网 时间:2024/06/06 04:55
1、希尔排序
算法思想简单描述:在直接插入排序算法中,每次插入一个数,使有序序列只增加1个节点,并且对插入下一个数没有提供任何帮助。如果比较相隔较远距离(称为增量)的数,使得数移动时能跨过多个元素,则进行一次比较就可能消除多个元素交换。D.L.shell于1959年在以他名字命名的排序算法中实现了这一思想。
算法先将要排序的一组数按某个增量d分成若干组,每组中记录的下标相差d.对每组中全部元素进行排序,然后再用一个较小的增量对它进行,在每组中再进行排序。当增量减到1时,整个要排序的数被分成一组,排序完成。下面的函数是一个希尔排序算法的一个实现,初次取序列的一半为增量,以后每次减半,直到增量为1。希尔排序是不稳定的。
2、希尔排序代码:
#include "stdafx.h"#include "iostream.h"//希尔排序void ShellSort(int *x, int n){int h, j, k, t;/*控制增量*/for (h=n/2; h>0; h=h/2) {/*直接插入排序*/for (j=h; j<n; j++) {t = *(x+j);for (k=j-h; (k>=0 && t<*(x+k)); k-=h){*(x+k+h) = *(x+k);}*(x+k+h) = t;}}}int main(){int a[11]={240,41,1242,1324,29423,3424,445,46,547,59,36};ShellSort(a,11);for (int i=0;i<11;i++){cout<<a[i]<<" ";}cout<<endl;return 0;}
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- Quartz初探
- 酒弄人生
- 【P2P网络】磁力链接转换为种子文件 magnet to torrent
- MyEclipse常见小瓿题
- i++ 和 ++i的区别总结
- 排序----希尔排序
- 浅谈MMORPG任务编辑器的设计与实现
- 矩阵相乘
- UDP协议复习
- How to Perfectly Uninstall Ask Toolbar
- 标点符号全角转半角
- HTML5与JQuery.Mobile(三)
- 寻找马鞍点
- strcmp 使用说明