基于java的快速排序

      因为上次面试师兄让我上机写个快排的算法,我没有写出来,很尴尬,今天把快排实现了一遍,以后遇到就不会掉这个坑了。

package testt;

public class fastsort {
   public  static void main(String [] args){
       int []a={4,2,56,26,38,12};
       int start=0;
       int end=a.length-1;
       sort(a,start,end);
       for (int i=0;i<a.length;i++)
       {
           System.out.println(a[i]);
       }
   }
   public static void sort(int []a,int low,int heigh){
       int start=low;
       int end=heigh;
       int key=a[low];
       while (end>start){
           while ((end>start)&&(a[end]>key))//从右向左遍历
               end--;
           if((end>start)&&(a[end]<=key)){
               //说明从右向左遍历找到了一个值比key值要小,所以进行交换
               int temp=a[end];
               a[end]=a[start];
               a[start]=temp;
           }
           //接着从左向右遍历
           while ((end>start)&&(a[start]<key))
                  start++;
           //找到了一个比key值要大的所以进行交换
           if((end>start)&&(a[start]>=key)){
               int temp=a[start];
               a[start]=a[end];
               a[end]=temp;
           }
       }
       //这样一个循环过来就第一次排序完成,接着进行递归
       if (low<start)
           //进行左递归
           sort(a,low,start-1);
       if (end<heigh)
           //进行右递归
           sort(a,end+1,heigh);
   }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值