public static void main(String[] args) {
int[] nums = new int[]{5, 3, 2, 10, 8, 1, 4, 9, 3, 12};
quickSort(nums, 0, nums.length -1);
for (int num : nums) System.out.print("\t" + num);
}
public static void quickSort(int[] nums, int start, int end) {
int target = nums[start];
int i = start; //不能+1,否则会直接跳过比较
int j = end;
while (i < j) {
while (i < j && nums[j] >= target) j--; // 因为target是从左开始,所以此处应该从右开始,确保i>j不会出现
while (i < j && nums[i] <= target) i++;
if (i < j) swap(nums, i, j);
}
swap(nums, start, i);
if (start < (i - 1)) quickSort(nums, start, i - 1);
if (end > (i + 1)) quickSort(nums, i + 1, end);
}
public static void swap(int[] nums, int i, int j) {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
快排实现--Java
最新推荐文章于 2022-04-21 12:09:44 发布