请给出一段java的快速排序代码
以下是Java中的快速排序代码:
public class QuickSort {
public void sort(int[] arr, int left, int right) {
if(left < right) {
int pivotIndex = partition(arr, left, right);
sort(arr, left, pivotIndex - 1);
sort(arr, pivotIndex + 1, right);
}
}
private int partition(int[] arr, int left, int right) {
int pivot = arr[right];
int i = left - 1;
for(int j = left; j < right; j++) {
if(arr[j] <= pivot) {
i++;
swap(arr, i, j);
}
}
swap(arr, i + 1, right);
return i + 1;
}
private 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};
QuickSort qs = new QuickSort();
qs.sort(arr, 0, arr.length - 1);
System.out.println(Arrays.toString(arr));
}
}
在快速排序中,选择一个元素作为基准点,将小于基准点的元素放在左边,大于基准点的元素放在右边,然后对左右两部分分别进行递归排序,最终得到有序的结果。在上面的代码中,partition方法选择最右边的元素作为基准点,通过两个指针i和j来分别从左到右和从右到左遍历数组,将小于基准点的元素和大于基准点的元素交换位置,最终返回基准点的位置。在sort方法中,递归调用partition方法,将数组分成左右两部分,然后对左右两部分分别进行递归排序。
原文地址: https://www.cveoy.top/t/topic/bWlk 著作权归作者所有。请勿转载和采集!