源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

2个java希尔排序示例

  • 时间:2021-10-24 18:16 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:2个java希尔排序示例
java希尔排序 希尔排序是插入排序的一种类型,也可以用一个形象的叫法缩小增量法。基本思想就是把一个数组分为好几个数组,有点像分治法,不过这里的划分是用一个常量d来控制。 这个0<d<n,n为数组的长度。这个算法有了插入排序的速度,也可以算是一个改进算法,在插入算法中,如果有一个最小的数在数组的最后面,用插入算法就会重最后一个 位置移动到第一个,这样就会浪费很大,使用这个改进的希尔排序可以实现数据元素的大跨度的移动。也就是这个算法的优越之处。
[u]复制代码[/u] 代码如下:
package cn.cqu.coce.xutao; public class shell3 {  public static void main(String args[]){   int a[]={7,43,23,5,3,2,0,6,74,9};   int n=a.length;   for(int i=0;i<n;i++)    System.out.print(a[i]+"t");   System.out.println();      for(int gap=n/2;gap>0;gap/=2){       for(int i=gap;i<n;i++){        for(int j=i-gap;j>=0&&a[j]>a[j+gap];j-=gap){         int temp=a[j+gap];         a[j+gap]=a[j];         a[j]=temp;        }       }      }   for(int i=0;i<n;i++)    System.out.print(a[i]+"t");   System.out.println();  } }
[img]http://img.1sucai.cn/uploads/article/2018010710/20180107100147_0_85647.jpg?20144792058[/img] [b]第二个示例 [/b]
[u]复制代码[/u] 代码如下:
class Shell {     public void shell_sort(int [] arrays){         for(int d=5;d>0;d=d-2){             for(int c=0;c<arrays.length-d;c++){                 for(int i=c;i<arrays.length;i=i+d){                     for(int j=i;j>0;j=j-d){                         if(j<d)                             break;                         if(arrays[j]<arrays[j-d]){                             int tmp;                             tmp=arrays[j];                             arrays[j]=arrays[j-d];                             arrays[j-d]=tmp;                         }                     }                 }             }             snp(arrays);         }     }     public void snp(int[] arrays){         for(int i=0;i<arrays.length;i++){             System.out.print(arrays[i]+" ");         }         System.out.println();     }     public static void main(String[] args)     {         Shell s=new Shell();         int[] a={45,20,80,40,26,58,66,70};         s.shell_sort(a);     } }
运行结果:
[u]复制代码[/u] 代码如下:
---------- java ---------- 20 70 40 26 58 66 80 20 58 45 26 70 66 80 26 40 45 58 66 70 80 输出完成 (耗时 0 秒) - 正常终止
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部