以前觉得算法好难,其实也就这样。希望自己面试成功
package com.qgm3.java;
import java.util.Scanner;
public class quickSort {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int len=in.nextInt();
int []arr=new int[len];
for(int i=0;i<arr.length;i++){
arr[i]=in.nextInt();
}
quickSort(arr, 0, arr.length-1);
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}
}
public static void quickSort(int[]arr,int left,int right ){
//判断,如果左边索引比右边大直接return结束方法
if(left>right){
return;
}
//定义变量保存基准数
int base=arr[left];
//定义变量i指向最左边
int i=left;
//定义变量j指向最右边
int j=right;
//当i!=j时,在循环中检索
while(i != j){
//先由j从右往左 ,如果比基准数小的就停下
//如果比基准数大或者相等继续
while(arr[j] >= base && i<j){
j--;//j从右往左移动
}
//i从左往右
while(arr[i] <= base && i<j){
i++;//从左往右
}
//交换j,i元素
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
//while不成立ij相遇,就交换base与相遇位置
arr[left]=arr[i];
arr[i]=base;
//基准数归位
//排左边
quickSort(arr,left,i-1);
//排右边
quickSort(arr,j+1,right);
}
}