常被提到的排序四(希尔排序)
来源:互联网 发布:saa7104监控软件 编辑:程序博客网 时间:2024/05/18 02:34
希尔排序
下面是《算法》书中对希尔排序的解释:
希尔排序的思想是使数组中任意介个为h的元素都是有序的。这样的数组被称为h有序数组。换句话说,一个h有序数组就是h个互相独立的有序数组编织在一组成的一个数组。在及进行排序时,如果h很大,我们就能将元素移动到很远的地方,为实现更小的h有序创造方便。用这种方式,对于任意以1结尾的h序列,我们都能够将数组排序。
希尔排序:
希尔排序我个人 的理解:
* 按我个人的理解是将整个数组先分成等长度的小数组
* 然后先将每个数据的第一数按顺序排序
* 排序完后再将数组的区间继续缩小
* 知道排序完成
代码实现:public class ShellSort {public static void sort(int[] source){int N = source.length;int h = N /2;while(h >= 1){//将数据变为h有序for (int i = h; i < source.length; i++) {//将source[i]插入到source[i-h],source[i-2h],source[i-3h],source[i-4h]...之中for(int j = i ; j >= 0 && (source[i] > source[j]); j =j-h){swap(source, j , j-h);}}//第一轮排序完将区间减小h = h/2;}}/* * 创建方法,由于交换数的位置 */private static void swap(int[] source, int x, int y) {int temp = source[x];source[x] = source[y];source[y] = temp;}public static void main(String[] args) {int[] a = {1,2,3,7,3,4,12,-23,54,76};sort(a);for (int i = 0; i < 10; i++) {System.out.print(a[i] +" ");}}}
0 0
- 常被提到的排序四(希尔排序)
- 常被提到的排序算法一(冒泡排序)
- 常被提到的排序算法二(选择排序)
- 常被提到的排序算法三(插入排序)
- 排序四 希尔排序
- 排序四 希尔排序
- 排序(四):希尔排序
- 四、希尔排序
- 四 希尔排序
- 基于JAVA的排序算法之四--希尔排序
- C#的四种排序算法:冒泡排序、选择排序、插入排序和希尔排序
- C#的四种排序算法:冒泡排序、选择排序、插入排序和希尔排序
- C#的四种排序算法 冒泡排序、选择排序、插入排序和希尔排序
- C#的四种排序算法:冒泡排序、选择排序、插入排序和希尔排序
- C#的四种排序算法:冒泡排序、选择排序、插入排序和希尔排序
- 排序的四种写法包括(冒泡排序,选择排序,插入排序,希尔排序)
- C#的四种排序算法:冒泡排序、选择排序、插入排序和希尔排序
- C#算法----(四)希尔排序
- 我写的第一个用Python写的爬虫
- NYOJ127星际之门(一)_n阶完全图的生成树数目
- cocos creator中使用protobuf(dcodeIO/protobuf.js 5.0)
- es-hadoop-hive 时间格式问题记录
- Mysql 5.1 配置双主
- 常被提到的排序四(希尔排序)
- 什么是体数据可视化(Volume data visualization)?及体绘制的各种算法和技术的特点?
- CU的划分、地址以及索引
- linux 块设备驱动
- 全兼容系列(4)----------------------2017春节倒计时
- n对括号组合的所有情况
- PE文件解析器的编写(二)——PE文件头的解析
- 如何判断自己IP是内网IP还是外网IP
- NSString类详解