博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
希尔排序
阅读量:5298 次
发布时间:2019-06-14

本文共 1559 字,大约阅读时间需要 5 分钟。

希尔排序的关键思想是使序列中任意间隔h的元素都是有序的,其中h是一个递增序列,使得该递增序列(如1/2 (3k-1))递减(从N / 3开始递减到1),当h为1时,整个序列就是有序的了。简易实现及测试用例如下:

1 import java.util.logging.Handler; 2  3  4 public class Shell { 5  6     private static void exch(Comparable[] a, int i , int j){ 7         Comparable tmp = a[i]; 8         a[i] = a[j]; 9         a[j] = tmp;10     }11     12     private static boolean less(Comparable a, Comparable b)13     {14         return (a.compareTo(b) < 0);15     }16     17     private static void show(Comparable[] a)18     {19         int N = a.length;20         for(int i = 0; i < N; i++)21         {22             System.out.print(a[i] + " ");23         }24         System.out.println();25     }26     27     public static boolean isSorted(Comparable[] a)28     {29         int N = a.length;30         for(int i = 1; i < N; i++)31         {32             if(less(a[i], a[i - 1])) return false;33         }34         return true;35     }36     37     public static void sort(Comparable[] a)38     {39         int N = a.length;40         int h = 1;41         while(h < N / 3) h = 3 * h + 1;42         while(h >= 1)43         {44             for(int i = h; i < N; i++)45             {46                 for(int j = i; j >= h && less(a[j], a[j - h]); j -= h)47                     exch(a, j, j - h);48             }49             h = h / 3;50         }51     }52 53     public static void main(String[] args) {54         String[] a = StdIn.readAllStrings();55         Selection.sort(a);56         show(a);57     }58 }
View Code

 

转载于:https://www.cnblogs.com/wwblog/p/3982049.html

你可能感兴趣的文章
第一册:lesson seventy nine.
查看>>
GCD的同步异步串行并行、NSOperation和NSOperationQueue一级用dispatch_once实现单例
查看>>
团队作业
查看>>
数据持久化时的小bug
查看>>
mysql中key 、primary key 、unique key 与index区别
查看>>
bzoj2257
查看>>
Linux查看文件编码格式及文件编码转换<转>
查看>>
Leetcode: Find Leaves of Binary Tree
查看>>
Vue 模板解释
查看>>
http://www.bootcss.com/
查看>>
20145308 《网络对抗》 注入shellcode+Return-to-libc攻击 学习总结
查看>>
将多张图片和文字合成一张图片
查看>>
自己动手写ORM(01):解析表达式树生成Sql碎片
查看>>
如何使用USBWebserver在本机快速建立网站测试环境
查看>>
百度Ueditor编辑器的Html模式自动替换样式的解决方法
查看>>
变量提升
查看>>
线性表可用顺序表或链表存储的优缺点
查看>>
在现有的mysql主从基础上,搭建mycat实现数据的读写分离
查看>>
[Flex] flex手机项目如何限制横竖屏?只允许横屏?
查看>>
tensorflow的graph和session
查看>>