-
设置两个指针,
一个左指针,初始化指向数组的第一个位置(最左边的数),向右一个个遍历
一个右指针,初始化指向数组的最后一个位置(最右边的数),向左一个个遍历
-
设置最左边的数为基准位,目的是用来做参照,
-
因为此处设置的基准数是最左边的数,所以需要让右指针先出动,向左一个个遍历(r–),找到比基准位小的数停下来
-
再让左指针出动,向右一个个遍历(l++),找到比基准位大的数停下来
-
现在比较两个指针指的数的大小,若左指针的数大于右指针,则做交换;否则继续重复2,3操作;
-
直到两指针相遇,若相遇位置的数小于基准位,则做交换;否则不交换;
-
此时的基准位的数已归位,但并不能确保基准位左右两边的各个子数组是有序的,所以需要迭代次方法
左边迭代sort(arr, left, r-1);
右边迭代sort(arr, r+1, right);
public static void sort(int[] arr,int left,int right){
int l,r,temp,t;
if(left>right){
return;
}
l=left;
r=right;
//temp就是基准位
temp = arr[left];
while (l=arr[l]&&l 


