使用Java 进行快排
以下是使用Java进行快排的示例代码:
public class QuickSort {
public static void quickSort(int[] arr, int low, int high) {
if (low < high) {
int pivot = partition(arr, low, high);
quickSort(arr, low, pivot - 1);
quickSort(arr, pivot + 1, high);
}
}
public static int partition(int[] arr, int low, int high) {
int pivotValue = arr[low];
int left = low + 1;
int right = high;
while (true) {
while (left <= right && arr[left] < pivotValue) {
left++;
}
while (left <= right && arr[right] >= pivotValue) {
right--;
}
if (left > right) {
break;
}
int temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
}
arr[low] = arr[right];
arr[right] = pivotValue;
return right;
}
public static void main(String[] args) {
int[] arr = {5, 2, 8, 3, 1, 6, 9};
quickSort(arr, 0, arr.length - 1);
for (int i : arr) {
System.out.print(i + " ");
}
}
}
解释:
quickSort方法接收一个整数数组,以及数组的低位和高位索引值。如果低位索引小于高位索引,则进行以下操作:- 调用
partition方法,获取枢轴元素的索引。 - 对枢轴元素左侧和右侧的子数组分别递归调用
quickSort方法。
- 调用
partition方法接收一个整数数组,以及数组的低位和高位索引值。它选取数组的第一个元素作为枢轴元素,并使用双指针法将数组分为两部分。具体步骤如下:- 初始化
left和right指针,分别指向数组的左右两端。 - 当
left指针小于等于right指针且指向的元素小于枢轴元素时,向右移动left指针。 - 当
left指针小于等于right指针且指向的元素大于等于枢轴元素时,向左移动right指针。 - 如果
left指针大于right指针,则跳出循环。 - 交换
left和right指针指向的元素。 - 重复以上步骤,直到
left指针大于right指针。 - 将枢轴元素与
right指针指向的元素交换位置。 - 返回
right指针的值。
- 初始化
main方法是一个示例,用于创建一个整数数组并调用quickSort方法对其进行排序。最后,它打印排序后的数组
原文地址: https://www.cveoy.top/t/topic/fb8c 著作权归作者所有。请勿转载和采集!