快速排序
快速排序:和归并排序类似,也是分区递归排序,区别是,归并排序先分区,在排序合并,快排是,先抽取point,排序,分区,在抽point,point是要排序数组里的一个数,我直接抽第一个,把大于point的数放左边,小于point的数放右边,在吧point置换进去
public class Client {
public static void main(String[] args) {
int result[] = new int[]{5, 1, 10, 20, 31, 9, 7, 5, 0, 12, 3};
sortArray(result, 0, result.length - 1);
for (int value : result) {
System.out.println(value);
}
}
<pre><code>public static void sortArray(int[] nums, int start, int end) {
if (start >= end)
return;
int point = nums[start];
int start1 = start;
int end1 = end;
while (start1 < end1) {
while (nums[end1] <= point && start1 < end1) {
end1--;
}
while (nums[start1] >= point && start1 < end1) {
start1++;
}
if (start1 > end1) {
break;
}
int tem = nums[start1];
nums[start1] = nums[end1];
nums[end1] = tem;
}
nums[start] = nums[start1];
nums[start1] = point;
sortArray(nums, start, start1 - 1);
sortArray(nums, start1 + 1, end);
}
}
记得排序时候一定要先从右边数过来,这样的start1,才是我们可以置换的位置
参考链接
评论区