加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Algs4-2.1.11希尔排序序列改为存数组

发布时间:2020-12-15 23:18:06 所属栏目:安全 来源:网络整理
导读:2.1.11将希尔排序中实时计算递增序列改为预先计算并存储在一个数组中。public class Shell2{??? public static void sort(Comparable[] a)??? {??????? int N=a.length;??????? int h=1;??????? int[] SN=new int[20];??????? int hMaxIndex=0;??????? while

2.1.11将希尔排序中实时计算递增序列改为预先计算并存储在一个数组中。public class Shell2{??? public static void sort(Comparable[] a)??? {??????? int N=a.length;??????? int h=1;??????? int[] SN=new int[20];??????? int hMaxIndex=0;??????? while (h<N/3) ??????? {?????????? SN[hMaxIndex]=h;??????????? h=3*h+1;??????????? hMaxIndex++;??????? }??????? ??????? for (int hIndex=hMaxIndex;hIndex>0;hMaxIndex--)??????? {??????????? h=SN[hIndex];??????????? for (int i=h;i<N;i++)??????????? {??????????????? for (int j=i;j>=h && less(a[j],a[j-h]);j-=h)??????????????????? exch(a,j,j-h);??????????? }??????? }??? }??? ??? private static boolean less(Comparable v,Comparable w)??? { return v.compareTo(w)<0;}??? ??? private static void exch(Comparable[] a,int i,int j)??? {??????? Comparable t=a[i];??????? a[i]=a[j];??????? a[j]=t;??? }??? ??? private static void show(Comparable[] a)??? {??????? for (int i=0;i<a.length;i++)??????????? StdOut.print(a[i]+" ");??????? StdOut.println();??? }??? ??? public static boolean isSorted(Comparable[] a)??? {??????? for (int i=0;i<a.length;i++)??????????? if(less(a[i],a[i-1])) return false;??????? return true;??? }??? ?? }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读