排序之插入排序和希尔排序

希尔排序是插入排序的一种类型,也可以用一个形象的叫法缩小增量法 插入排序算法是一个对少量元素进行排序的有效算法。插入排序的工作原理与打牌时整理手中的牌的做法类似,开始摸牌时,我们的左手是空的,接着一次从桌上摸起一张牌,并将它插入到左手的正确位置。为了找到这张牌的正确位置,要将它与手中已有的牌从右到左进行比较,无论什么时候手中的牌都是排序好的。   下面我们用java描述这两张排序方法,以下为实现代码: 初始化以及打印 public class csharray { int[] csh={23,57,98,20,82,73,65,50,53}; //初始化数组 int i,len=csh.length; int[] newarray(){ //初始化新数组 int[] newa=new int[len]; for(i=0;i<len;i++) newa[i]=csh[i]; return newa; } void prArray(int[] newa){ //打印排序后的数组 for(int x:newa) System.out.print(x+" "); System.out.println(); } }   排序实现方法 public class arraysort extends csharray{ int len,k,currendata,i,temp; //数组长度和交换数组 //int[] csh={23,57,98,20,82,73,65,50,53}; //初始化数组 int[] charuarray(int[] newa){ //数组排序处理---插入排序 len=newa.length; for(i=1;i<len;i++){ currendata=newa[i]; temp=i; while(temp>0&&newa[temp-1]>currendata){ newa[temp]=newa[temp-1]; temp--; } newa[temp]=currendata; } return newa; } int[] xierarray(int[] newa){ //希尔排序 len=newa.length; for(k=len/2;k>0;k--){ for(i=k;i<len;i++){ if(newa[i]<newa[i-1]){ currendata=newa[i-1]; newa[i-1]=newa[i]; newa[i]=currendata; } } } return newa; } }   主函数 public class Arraydoem { public static void main(String[] args) { arraysort ay=new arraysort(); ay.prArray(ay.charuarray(ay.newarray())); System.out.println(); ay.prArray(ay.xierarray(ay.newarray())); }

爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情Blog Img