下面代码中首先需要清楚以下几点
position方法中
1.选择数组中的最后一个元素arr[high]作为轴(key)
2.左指针为left,从最左边开始寻找第一个比key大的数
3.右指针为right,从key前面的一个元素开始向后寻找第一个比key小的数值
4.经过2,3两个步骤后,将会出现以下两种情况
(1):left和right没有相遇,此时进行交换,swap(arr[left],arr[right]);
(2):left和right相遇,此时判断相遇点的值是否比key值大,如果大的话做swap(arr[high],arr[left]),此时返回left
如果比小的话,不做任何处理,直接返回left
5.position中返回left用于分割数组,下一次用于排序的数组被分割为(low,left),(left+1,high)两段,进行递归操作
代码如下:
public class Test {
public static void main(String[] args) {
int []num={9,8,7,6,5,4,3,2,1};
sort(num,0,num.length-1);
for(int n:n