(1)基本思想:算法先将要排序的一组数按某个增量d(n/2,n为要排序数的个数)分成若干组,每组中记录的下标相差d.对每组中全部元素进行直接插入排序,然后再用一个较小的增量(d/2)对它进行分组,在每组中再进行直接插入排序。当增量减到1时,进行直接插入排序后,排序完成。
(2)用java实现
public class shellSort {
public shellSort(){
int a[]={1,54,6,3,78,34,12,45,56,100};
double d1=a.length;
int temp=0;
while(true){
d1= Math.ceil(d1/2);
int d=(int) d1;
for(int x=0;x<d;x++){
for(int i=x+d;i<a.length;i+=d){
int j=i-d;
temp=a;
for(;j>=0&&temp<a[j];j-=d){
a[j+d]=a[j];
}
a[j+d]=temp;
}
}
if(d==1)
break;
}
for(int i=0;i<a.length;i++)
System.out.println(a);
}
}

转载于:https://blog.51cto.com/14314113/2398499

AJPFX分享java排序之希尔排序相关推荐

  1. datatable的数据进行组内排序_排序算法学习分享(四)希尔排序

    排序,也称为排序算法,可以说是我们学习算法的过程中遇到的第一个门槛,也是实际应用中使用得较为频繁的算法,我将自己对所学的排序算法进行一个归纳总结与分享,如有错误,欢迎指正! 排序算法学习分享(一)选择 ...

  2. java希尔排序_java_java高级排序之希尔排序,希尔排序对于多达几千个数据 - phpStudy...

    java高级排序之希尔排序 希尔排序对于多达几千个数据项的,中等大小规模的数组排序表现良好,希尔排序不像快速排序和其它时间复杂度为O(n*logn)的排序算法那么快,因此,对非常大的文件排序,它不是最 ...

  3. java语言冒泡排序法_Java实现八个常用的排序算法:插入排序、冒泡排序、选择排序、希尔排序等...

    本文实现了八个常用的排序算法:插入排序.冒泡排序.选择排序.希尔排序 .快速排序.归并排序.堆排序和LST基数排序 首先是EightAlgorithms.java文件,代码如下: import jav ...

  4. 【Java】八个常用的排序算法:插入排序、冒泡排序、选择排序、希尔排序 、快速排序、归并排序、堆排序和LST基数排序

    这篇文章主要介绍了Java如何实现八个常用的排序算法:插入排序.冒泡排序.选择排序.希尔排序 .快速排序.归并排序.堆排序和LST基数排序,需要的朋友可以参考下 本文实现了八个常用的排序算法:插入排序 ...

  5. java 插入排序及希尔排序

    看一下这两种排序的算法. 插入排序,其大致实现如下: /*** 插入排序;* <pre>* 插入排序(英语:Insertion Sort)是一种简单直观的排序算法.* 它的工作原理是通过构 ...

  6. 排序算法:冒泡排序、插入排序、选择排序、希尔排序

    相关博客: 排序算法:冒泡排序.插入排序.选择排序.希尔排序 排序算法:归并排序.快速排序 排序算法:桶排序.计数排序.基数排序 排序算法:堆排序 十大排序算法小结 一.冒泡排序: 1.算法原理: 冒 ...

  7. 【排序算法】冒泡排序|选择排序|插入排序|希尔排序

    文章目录 冒泡排序 选择排序 插入排序 希尔排序 冒泡排序   第一个元素开始向第二个元素比较,若大于则交换位置,不大于则不动.然后第二个元素和第三个元素比较,再然后第三个元素和第四个元素比较-一直比 ...

  8. 冒泡排序、插入排序、选择排序、希尔排序、堆排序、归并排序等常用排序算法的比较

    掌握好常用的排序算法,在实际的项目开发中可以节省很多的时间.每一种排序算法在执行的效率上是存在差别的,这些微小的时间差,也许在平常的联系当中感觉不到,但是涉及到数据量比较大或者是在资源比较紧张的系统中 ...

  9. 希尔排序python 简书_排序:希尔排序(算法)

    文 | 莫若吻 (注:如果想更好的理解希尔排序,请先看看我的上一篇博客插入排序,希望会对你有帮助.) 一.简介 希尔排序(Shell Sort)是插入排序的一种算法,是对直接插入排序的一个优化,也称缩 ...

  10. 用python写希尔排序_python希尔排序介绍(实例)

    希尔排序介绍 希尔排序(Shell Sort)是插入排序的一种.也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本,该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个&qu ...

最新文章

  1. USTC English Club Note20171013(2)
  2. 如何将数据导入到 SQL Server Compact Edition 数据库中(四)
  3. 十大排序算法之归并排序
  4. Httputils请求网络数据
  5. linux服务器启动过程
  6. dreamweaver 8的替换功能
  7. Linux文件系统(四)---三大缓冲区之inode缓冲区 (内存inode映像 )
  8. 高德地图偏移android,关于JS接高德地图API,以及坐标偏移坐标转换(示例代码)
  9. V-layout 卡顿消除
  10. RxSwift 学习笔记
  11. Java学习中遇到的中文乱码问题的整理和解决方法
  12. 一个教训:养成良好的编程习惯的重要性
  13. MATLAB代码实现二次多项式曲线拟合
  14. iText7---Adding low-level content添加低层级内容
  15. TP-LINK 150M无线宽带路由器TL-WR740N 路由器当无线AP(交换机用)
  16. R包——maftools可视化神器
  17. 2022-2028年版中国类金融行业发展走势与投资风险评估报告
  18. PCB设计中常见的八个问题及解决方法
  19. 常用的固定资产管理软件有哪些
  20. EPUB和PDF的区别

热门文章

  1. 明天(20171017)继续学习阅读的文章
  2. Netty笔记(七)ChannelHandlers and Codes 整合
  3. Centos挂载iscsi存储
  4. Windows 8 各个版本区别对比
  5. 成功数据恢复一例MYSQL数据库记录恶意删除
  6. 8 下半部和推后执行的工作
  7. Oclint 安装指导
  8. 使用jrtplib(RTP)传输H.264视频文件
  9. 基数树(radix tree)
  10. TMS570LC43xx SylixOS can 驱动