package com.navinfo.aerozh.ni.operate.controller; import java.util.Arrays; /** * @Author: * @Description: * @Date: Created in 2019/11/6 9:57 * @Modified By: */ public class quitSort { // 2,5,3,2,7,8,65,33 2为基准数 ll 0 rr 6 2 33 public static void getSort(int[] data,int left,int right) { //首先查找一个基准数 int compareNum = data[left]; int ll = left; int rr = right; while(ll < rr){ //基准数 与 数组右面对比,找到比基准数大的数据 while(ll < rr && compareNum <= data[rr]){ //rr=5 rr--; } if(ll < rr){ data[ll] = data[ll] + data[rr]; data[rr] = data[ll] - data[rr]; data[ll] = data[ll] - data[rr]; /*int temp = data[ll]; data[ll] = data[rr]; data[rr] = temp;*/ //33 2 ll++; //1 } //基准数 与 数组钱买你对比,找到比基准数小的数据 while(ll < rr && compareNum >= data[ll]){ ll++; //2 } if(ll < rr){ data[ll] = data[ll] + data[rr]; data[rr] = data[ll] - data[rr]; data[ll] = data[ll] - data[rr]; /*int temp = data[ll]; data[ll] = data[rr]; data[rr] = temp;*/ rr--; } } if(left < ll) { getSort(data, left, ll - 1); } if(ll < right) { getSort(data, ll + 1, right); } } public static void main(String[] args) { int[] data = {2,5,3,4,8,5,1,3,99}; getSort(data,0,data.length-1); System.out.println(Arrays.toString(data)); } }