数据结构之排序算法希尔排序 java



代码如下:

@Test
	public void shellSort(){
		int []a={22,15,32,14,11,10,5,-33,-2,1000,1222,1235};
	    long t1=System.currentTimeMillis();
		for(int gap=(a.length+1)/2;;){//分组
		      for(int i=0;i<a.length-gap;i++){//用越有序越有利的排序算法(基本排序算法)进行组内排序
		    	  for(int j=0;j<a.length-gap;j+=gap){//为便于大家理解shell排序算法,这里用冒泡进行组内排序
		    		    if(a[j]>a[j+gap]){
		    		    	swap(a,j,j+gap);
		    		    }
		    	  }
		      }
		      if(gap>1){
		    	  gap=(gap+1)/2;
		      }else{
		    	  break;
		      }
		}
		long t2=System.currentTimeMillis();
		System.out.println(t2+","+t1);
		print(a);
	}

    
@Test
public void shellSort2(){
	int []a={22,15,32,14,11,10,5,-33,-2,1000,1222,1235};
    long t1=System.currentTimeMillis();
	for(int gap=(a.length+1)/2;;){//分组
	      for(int i=0;i<a.length-gap;i++){//用越有序越有利的排序算法(基本排序算法)进行组内排序
	    	  int temp=a[i+1];
	    	  int j=i;
	    	  for(j=0;j<a.length-gap;j+=gap){//插入排序
	    		    if(a[j]>a[j+gap]){
	    		        a[j+gap]=a[j];
	    		        j--;
	    		        if(j<0){
	    		        	break;
	    		        }
	    		    }
	    	  }
	    	  a[j+1]=temp;
	      }
	      if(gap>1){
	    	  gap=(gap+1)/2;
	      }else{
	    	  break;  
	      }
	}
	long t2=System.currentTimeMillis();
	System.out.println(t2+","+t1);
	print(a);
   }
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值