1.希尔排序的java实现
a.建议先理解清楚插入排序的原理再来理解;
b.原理:将数据分成多分,再对各分进行插入排序
c.代码:ShellApp
package cn.xiaobo.ShellOrder;
public class ShellApp {
public void sort(int[] arr) {
for(int gap=arr.length/2;gap>0;gap/=2){
//对进行的分组进行插入排序,建议熟悉插入排序再来理解
for(int i=gap;i
//后面的操作会改变i需要先存储i;
int j=i;
int temp=arr[j];
if(arr[j]
//插入排序的具体操作,每次都跟左边的数据比较
//(因为已经分好组了,所以arr[j-gap]与arr[j]是最近的),然后移动
//最后将temp插入到不满足的那项;
while(j-gap>=0&&temp
arr[j]=arr[j-gap];
j-=gap;
}
arr[j]=temp;
}
}
}
}
}
d.ShellOrder
package cn.xiaobo.ShellOrder;
public class ShellMain {
public static void main(String[] args) {
ShellApp shellApp=new ShellApp();
int arr[]={2,3,43,6,7,8,23,12,34,78};
shellApp.sort(arr);
for(int i=0;i
System.out.println("arr "+i+"is : "+arr[i]);
}
}
}
e.参考博客:https://www.cnblogs.com/chengxiao/p/6104371.html