用Java实现快速排序
快速排序(Quick Sort)是一种常用的排序算法,基本思想是选择一个基准元素,将小于基准元素的放在其左边,大于基准元素的放在其右边,然后再对左右两部分进行递归排序。
Java实现快速排序的代码如下:
public class QuickSort {
public static void quickSort(int[] arr, int left, int right) {
if (left < right) {
int partitionIndex = partition(arr, left, right);
quickSort(arr, left, partitionIndex - 1);
quickSort(arr, partitionIndex + 1, right);
}
}
private static int partition(int[] arr, int left, int right) {
int pivot = arr[left];
int i = left + 1;
int j = right;
while (i <= j) {
while (i <= j && arr[i] <= pivot) {
i++;
}
while (i <= j && arr[j] > pivot) {
j--;
}
if (i < j) {
swap(arr, i, j);
}
}
swap(arr, left, j);
return j;
}
private static void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
public static void main(String[] args) {
int[] arr = {5, 3, 8, 4, 2, 7, 1, 10, 6, 9};
quickSort(arr, 0, arr.length - 1);
System.out.println(Arrays.toString(arr));
}
}
在上述代码中,quickSort方法实现了快速排序的主要逻辑。它接收三个参数:待排序数组arr、排序区间的左端点left和右端点right。如果left小于right,则选取arr[left]作为基准元素,并将数组划分为左右两部分,左边部分的元素都小于等于基准元素,右边部分的元素都大于基准元素。然后分别对左右两部分进行递归排序。partition方法实现了划分操作的逻辑,它接收三个参数:待排序数组arr、排序区间的左端点left和右端点right。在该方法中,首先选取arr[left]作为基准元素pivot,然后使用两个指针i和j分别指向左右两端。i从左往右移动,找到第一个大于pivot的元素,j从右往左移动,找到第一个小于等于pivot的元素,然后交换arr[i]和arr[j]。重复这个过程直到i大于j,将pivot放到arr[j]的位置上,然后返回j作为划分点的位置。swap方法用于交换两个元素的值。
在main方法中,我们创建一个测试数组,然后调用quickSort方法进行排序,并使用Arrays.toString方法打印排序后的结果
原文地址: https://www.cveoy.top/t/topic/ciRX 著作权归作者所有。请勿转载和采集!