全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Java 插入排序之希尔排序的实例

Java 插入排序之希尔排序的实例

Java代码 

/*希尔排序(Shell Sort)是插入排序的一种。其基本思想是:先取定一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1 
   * 个组,所有距离为d1的倍数的记录放在同一个组中,在各个组中进行插入排序;然后,取第二个增量d2<d1,重复上述的分组和排序, 
   * 直至所取的增量dt=1(dt<dt-1<...<d2<d1),即所有记录放在同一组中进行直接插入排序为止。 
   * new int[]{8,5,1,7,9,4,6},开始分割集合的间隔长度为3的情况,[[6][3][0]比较排序后,[4]和[1]比较排序后,[5]和[2]比较排序后, 
   * 分割集合的间隔长度为1,这时[1]和[0]比较排序后,[2][1][0]....,和直接插入排序一样了。*/ 
  public static void shellSort(int[] intArray) { 
     System.out.print("将要排序的数组为:    "); 
     for(int k=0;k<intArray.length;k++) 
        System.out.print(" "+intArray[k]+" "); 
      System.out.println(); 
     
    int arrayLength=intArray.length; 
    int j,k;//循环变量 
    int temp;//暂存变量 
    boolean isChange;//数据是否改变 
    int dataLength;//分割集合的间隔长度 
    int pointer;//进行处理的位置 
    dataLength=arrayLength/2;//初始集合间隔长度 
    while(dataLength!=0){//数列仍可进行分割 
      //对各个集合进行处理 
      for(j=dataLength;j<arrayLength;j++){ 
        isChange=false; 
        temp=intArray[j];//暂存,待交换值时用 
        pointer=j-dataLength;//计算进行处理的位置 
        //进行集合内数值的比较与交换值 
        while(temp<intArray[pointer]&&pointer>=0&&pointer<arrayLength){ 
          intArray[pointer+dataLength]=intArray[pointer]; 
          //计算下一个欲进行处理的位置 
          pointer=pointer-dataLength; 
          isChange=true; 
          System.out.print("every changing result: "); 
          for(k=0;k<arrayLength;k++) 
            System.out.print(" "+intArray[k]+" "); 
          System.out.println(); 
          if(pointer<0||pointer>arrayLength) 
            break; 
        } 
        //与最后的数值交换 
        intArray[pointer+dataLength]=temp; 
        if(isChange){ 
          System.out.print("Current sorting result: "); 
          for(k=0;k<arrayLength;k++) 
            System.out.print(" "+intArray[k]+" "); 
          System.out.println(); 
        } 
      } 
      System.out.print("指定分割集合的间隔长度为"+dataLength+",对各个集合进行处理后,Current sorting result: "); 
      for(k=0;k<arrayLength;k++) 
        System.out.print(" "+intArray[k]+" "); 
      System.out.println(); 
      dataLength=dataLength/2;//计算下次分割的间隔长度 
    } 
  } 

 运行后的结果为:

Java代码 

将要排序的数组为:     8 5 1 7 9 4 6  
every changing result: 8 5 1 8 9 4 6  
Current sorting result: 7 5 1 8 9 4 6  
every changing result: 7 5 1 8 9 4 8  
every changing result: 7 5 1 7 9 4 8  
Current sorting result: 6 5 1 7 9 4 8  
指定分割集合的间隔长度为3,对各个集合进行处理后,Current sorting result: 6 5 1 7 9 4 8  
every changing result: 6 6 1 7 9 4 8  
Current sorting result: 5 6 1 7 9 4 8  
every changing result: 5 6 6 7 9 4 8  
every changing result: 5 5 6 7 9 4 8  
Current sorting result: 1 5 6 7 9 4 8  
every changing result: 1 5 6 7 9 9 8  
every changing result: 1 5 6 7 7 9 8  
every changing result: 1 5 6 6 7 9 8  
every changing result: 1 5 5 6 7 9 8  
Current sorting result: 1 4 5 6 7 9 8  
every changing result: 1 4 5 6 7 9 9  
Current sorting result: 1 4 5 6 7 8 9  
指定分割集合的间隔长度为1,对各个集合进行处理后,Current sorting result: 1 4 5 6 7 8 9 

 当分割的间隔为1时,变成了直接插入排序。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Java  # 插入排序之希尔排序  # 插入排序  # 希尔排序  # Java实现八个常用的排序算法:插入排序、冒泡排序、选择排序、希尔排序等  # Java实现插入排序  # 希尔排序和归并排序  # Java数据结构之插入排序与希尔排序  # java插入排序和希尔排序实现思路及代码  # 长度为  # 希尔  # 组中  # 放在  # 第一个  # 希望能  # 第二个  # 谢谢大家  # 时用  # 仍可  # 变成了  # 样了  # 下次  # 在同一  # 在各个  # lt  # strong  # dt 


相关文章: 深入理解Android中的xmlns:tools属性  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  如何确保FTP站点访问权限与数据传输安全?  七夕网站制作视频,七夕大促活动怎么报名?  nginx修改上传文件大小限制的方法  免费公司网站制作软件,如何申请免费主页空间做自己的网站?  已有域名和空间如何搭建网站?  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  如何在Windows环境下新建FTP站点并设置权限?  建站之星安装后如何自定义网站颜色与字体?  文字头像制作网站推荐软件,醒图能自动配文字吗?  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  定制建站如何定义?其核心优势是什么?  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  制作企业网站建设方案,怎样建设一个公司网站?  如何通过西部建站助手安装IIS服务器?  如何在阿里云香港服务器快速搭建网站?  实现点击下箭头变上箭头来回切换的两种方法【推荐】  电商网站制作价格怎么算,网上拍卖流程以及规则?  如何设置并定期更换建站之星安全管理员密码?  如何基于云服务器快速搭建网站及云盘系统?  如何快速搭建虚拟主机网站?新手必看指南  网站微信制作软件,如何制作微信链接?  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  建站之星如何防范黑客攻击与数据泄露?  韩国服务器如何优化跨境访问实现高效连接?  大连网站制作公司哪家好一点,大连买房网站哪个好?  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  如何通过虚拟主机快速完成网站搭建?  如何彻底卸载建站之星软件?  建站之星下载版如何获取与安装?  广东专业制作网站有哪些,广东省能源集团有限公司官网?  网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?  青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?  如何在阿里云ECS服务器部署织梦CMS网站?  如何在Windows服务器上快速搭建网站?  免费视频制作网站,更新又快又好的免费电影网站?  如何构建满足综合性能需求的优质建站方案?  建站主机选购指南:核心配置优化与品牌推荐方案  浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?  网站制作价目表怎么做,珍爱网婚介费用多少?  网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?  如何在IIS服务器上快速部署高效网站?  如何快速完成中国万网建站详细流程?  义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?  广州顶尖建站服务:企业官网建设与SEO优化一体化方案  如何用IIS7快速搭建并优化网站站点?  专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?  郑州企业网站制作公司,郑州招聘网站有哪些?  建站主机与服务器功能差异如何区分? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。