java 快速排序随机选择key

import java.util.Arrays;
import java.util.Random;

/***
 * 快速排序随机选择key
 */
public class QuickSortRandom {

    static public void main(String[] args){

        int[] array={9,0,10,-2,5,19,4,0,7,2,22};
        quickSortRandom(array,0,array.length-1);
        System.out.println(Arrays.toString(array));


    }



    static public void quickSortRandom(int[] array,int l,int h){
        if(l>=h)
            return;

        int _l=l;
      int _h=h;
      int keyIndex=new Random().nextInt(h-l) + l;

      int key=array[keyIndex];

      int temp=array[l];
      array[keyIndex]=temp;
      array[l]=key;



      while(_l<_h){

          while(_l<_h&&array[_h]>=key){
              _h--;
          }

          temp=array[_h];
          array[_h]=array[_l];
          array[_l]=temp;


          while(_l<_h&&array[_l]<=key){
              _l++;
          }

          temp=array[_l];
          array[_l]=array[_h];
          array[_h]=temp;

      }

      System.out.println("==");

      if(l<_l){
          quickSortRandom(array,l,_l-1);
      }

      if(_h<h){
          quickSortRandom(array,_h+1,h);
      }



    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值