1.确定基准元素就是数组最左边的位置元素
2.首先判断队尾元素
2.1 如果队尾元素大于等于基准元素的时候,向前挪动尾指针
2.2 如果队尾元素小于基准元素的时候,则把尾指针的数值赋值给初始指针
3.要是为2.1的情况则继续比较,要是为2.2的情况则首指针后移一位
4.当两个首指针,尾指针相遇的时候则把基准元素赋值给两个元素相交的位置
5.引入递归(这里要注意递归的前后顺序)
class Solution {
public int minArray(int[] numbers) {
quickSort(numbers,0,numbers.length-1);
return numbers[0];
}
private static void quickSort(int[] arr,int leftIndex,int rightIndex){
if(leftIndex >= rightIndex){
return;
}
int left = leftIndex;
int right = rightIndex;
int key = arr[leftIndex];
while(left < right){
while(right > left && arr[right] >= key){
right--;
}
arr[left] = arr[right];
while(right > left && arr[right] <= key){
left++;
}
arr[right] = arr[left];
}
arr[left] = key;
quickSort(arr, leftIndex, left-1);
quickSort(arr, right + 1, rightIndex);
}
}