快排的原理大家都知道,关键是写的时候容易出问题。
对于我需要注意的是从后面开始交换,因为你去掉哨兵是第一个。
public static void quickSort(int[] nums, int start, int end) {
if(start >= end) return;
int left = start;
int right = end;
int flag = nums[start];
while (left < right) {
while (left < right && nums[right] > flag) {
right--;
}
swap(nums, left, right);
while (left < right && nums[left] <= flag) {
left++;
}
swap(nums, left, right);
}
quickSort(nums, start, left -1);
quickSort(nums, left + 1, end);
}
public static void swap(int[] nums, int left, int right) {
int temp = nums[left];
nums[left] = nums[right];
nums[right] = temp;
}
网友评论