搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > 伊斯电子编程 > JAVA 算法---希尔排序算法

JAVA 算法---希尔排序算法

伊斯电子编程 2020-07-28


基本思想:先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行依次直接插入排序。

1. 操作方法:选择一个增量序列 t1,t2,…,tk,其中 ti>tj,tk=1;

2. 按增量序列个数 k,对序列进行 k 趟排序;

3. 每趟排序,根据对应的增量 ti,将待排序列分割成若干长度为 m 的子序列,分别对各子表进行直接插入排序。仅增量因子为1 时,整个序列作为一个表来处理,表长度即为整个序列的长度。



 private void shellSort(int[] a) {int dk = a.length/2; while( dk >= 1 ){  ShellInsertSort(a, dk);  dk = dk/2;} }private void ShellInsertSort(int[] a, int dk) {//类似插入排序,只是插入排序增量是 1,这里增量是 dk,把 1 换成 dk 就可以了for(int i=dk;i<a.length;i++){if(a[i]<a[i-dk]){int j;int x=a[i];//x 为待插入元素a[i]=a[i-dk];for(j=i-dk; j>=0 && x<a[j];j=j-dk){//通过循环,逐个后移一位找到要插入的位置。a[j+dk]=a[j];}a[j+dk]=x;//插入} } }



版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《JAVA 算法---希尔排序算法》的版权归原作者「伊斯电子编程」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注伊斯电子编程微信公众号

伊斯电子编程微信公众号:ESDZBC

伊斯电子编程

手机扫描上方二维码即可关注伊斯电子编程微信公众号

伊斯电子编程最新文章

精品公众号随机推荐

上一篇 >>

Lua 数据类型