Java排序总结

各种排序的代码,自己理解,我的理解写在了笔记本上了吐舌头

public class Paixu {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
          int a[]={10,8,6,4,2};
          sort(a);
          for(int i : a)
          {
        	  System.out.println("冒泡排序是:"+i);
          }
          
          int b[]={10,8,6,4,2};
          sort2(b);
          for(int i :b)
          {
        	  System.out.println("选择排序是:"+i);
          }
          
          int c[]={10,8,6,4,2};
          sort3(c);
          for(int i :c)
          {
        	  System.out.println("插入排序是:"+i);
          }
          
          int d[]={10,8,6,4,2};
          sort4(d,0,4);
          for(int i :d)
          {
        	  System.out.println("快速排序是:"+i);
          }
	}
	
	 //冒泡排序
     static void sort (int a[])
     {
    	 int temp = 0;
    	 for(int i=0;i<a.length-1;i++)
    	 {
    		 for(int j=0;j<a.length-i-1;j++)
    		 {
    			 if(a[j]>a[j+1])
    			 {
    				 temp = a[j];
    				 a[j] = a[j+1];
    				 a[j+1] = temp;
    			 }
    		 }
    	 }
     }
     
     //选择排序法
     static void sort2 (int a[])
     {
    	 int temp =0;
    	 for(int i=0;i<a.length-1;i++)
    	 {
    		 for(int j=i+1;j<a.length;j++)
    		 {
    			  if(a[i]>a[j])
    			  {
    				  temp = a[i];
     				 a[i] = a[j];
     				 a[j] = temp;
    			  }
    		 }
    		
    	 }
     }
     
     //插入排序法
     static void sort3(int a[])
     {
    	 
    	 for(int i=1;i<a.length;i++)
    	 {
    		 int insertIndex =i-1;
    		 int inser= a[i];
    		 while(insertIndex>=0&&a[insertIndex]>inser)
    		 {
    			 a[insertIndex+1] = a[insertIndex];
    			 insertIndex--;
    		 }
    		 a[insertIndex+1] =inser;
    	 }
     }
     
     //快速排序法
     static void sort4(int a[],int lift,int right)
     {
    	 int l = lift;
    	 int r = right;
    	 int temp = 0;
    	 int middle = a[(l+r)/2];
    	 while(l<r){
	    	   while(a[l]<middle){
	    		   l++;
	    	   }
	    	   while(a[r]>middle){
	    		   r--;
	    	   }
	    	   if(l>=r) break;
	    	   temp = a[l];
	    	   a[l] = a[r];
	    	   a[r] = temp;
	    	   
	    	   if(a[l]==middle){
	    		   r--;
	    	   }
	    	   if(a[r]==middle){
	    		   l++;
	    	   }
	       }
	       if(l==r){
	    	   l++;
	    	   r--;
	       }
	       if(lift<r){
	    	   sort4(a,lift,r);
	       }
	       if(right>l){
	    	   sort4(a,l,right);
	       }   
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值