Java 快速排序算法实现代码示例
以下是使用 Java 语言实现快速排序算法的代码示例:
public class QuickSort {
public static void main(String[] args) {
int[] nums = {5, 2, 9, 3, 6, 8, 1, 7, 4};
quickSort(nums, 0, nums.length - 1);
for (int num : nums) {
System.out.print(num + " ");
}
}
public static void quickSort(int[] nums, int low, int high) {
if (low < high) {
int pivotIndex = partition(nums, low, high);
quickSort(nums, low, pivotIndex - 1);
quickSort(nums, pivotIndex + 1, high);
}
}
public static int partition(int[] nums, int low, int high) {
int pivot = nums[high];
int i = low - 1;
for (int j = low; j < high; j++) {
if (nums[j] < pivot) {
i++;
swap(nums, i, j);
}
}
swap(nums, i + 1, high);
return i + 1;
}
public static void swap(int[] nums, int i, int j) {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}
在上述代码中,我们首先定义了一个quickSort方法,该方法接收一个整数数组nums、一个起始下标low和一个结束下标high作为参数。在该方法中,我们首先判断low是否小于high,如果是,则调用partition方法对nums进行分区操作,并将返回的分区点下标赋值给pivotIndex。然后,我们再分别对pivotIndex左侧和右侧的子数组调用quickSort方法进行递归排序。
最后,我们定义了partition方法,该方法接收一个整数数组nums、一个起始下标low和一个结束下标high作为参数。在该方法中,我们选择nums[high]作为基准元素pivot,并使用两个指针i和j来遍历数组。在遍历过程中,如果发现nums[j]小于pivot,则将i递增1,并交换nums[i]和nums[j]的值。最后,将pivot与nums[i + 1]交换位置,并返回i + 1作为分区点下标。
最后,我们在main方法中调用quickSort方法对一个示例数组进行排序,并输出排序结果。
原文地址: https://www.cveoy.top/t/topic/p1aN 著作权归作者所有。请勿转载和采集!