排序-5-希尔排序
来源:互联网 发布:神通数据库的英文 编辑:程序博客网 时间:2024/05/29 08:04
工具方法法类:
package myDataStructrueADNDalgorith.three.arrSort;/** * 数组为模板排序算法中的一些公用的模板方法 * 创建人:曹雪坤 * 时间:2017年3月12日-上午10:15:02 * @version 1.0.0 * */public class Example { /* * 交换数组中的两个数据 */ public static void exch(int [] arr,int i,int index){ int change = arr[i]; arr[i] = arr[index]; arr[index] = change; } /* * 遍历数组 */ public static void show(int[] arr){ System.out.println("遍历数组"); for(int i:arr){ System.out.print(" "+i+" "); } System.out.println(); }}
排序:
package myDataStructrueADNDalgorith.three.arrSort;/* * 希尔排序: * 有间隔的插入排序 */public class XiErSort { public static void main(String[] args) { int arr[] = {3,5,1,4,2,7,9,6,10,8,11,15,14,16,18,17,19,20,12,13,20,21,24,25,26,28,29,27,23}; XiErSort.sort(arr); } public static void sort(int[] arr){ int N = arr.length; int h = 1; //设置h的值就是间隔数位13 那么就是下标为0,13,26,组成一个新的数组 while(h < N/3){h = 3*h + 1;} while(h >=1){//最后一次是h=1,就相当于进行一次插入排序,只不过大部分已经排序好了,所以很快 System.out.println("===h:"+h); for(int i=h;i<N;i++){ for(int k=i;k>=h;k-=h){ if(arr[k]>arr[k-h]){ Example.exch(arr,k,k-h); } System.out.println("k: "+k+"====k-h:"+(k-h)); } } Example.show(arr); h/=3;//增量序列 } }}
阅读全文
0 0
- 排序-5-希尔排序
- 排序算法(5)-希尔排序
- 【day-5】希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 通过python获取美女图片
- Linux学习(八)网络基础
- 链表
- Ubuntu中安装vmwareTools
- 华为开发者联盟 -- 测试中心
- 排序-5-希尔排序
- HDU 3436 Queue-jumpers splay
- linux 安装mysql数据库——yum安装法
- Android_UI_沉浸式通知栏
- 【动态规划】HDU1422重温世界杯【最大子段和变形】
- Struts2 s2-052 REST插件远程代码执行技术分析与防护方案
- 强化学习Q learning与policy gradient
- Codeforces Round #433 (Div. 2)
- 猴子挖花生问题