Java 实现:
import java.util.Arrays;
public class QuickSort {
public static void quickSort(int[] arr, int left, int right) {
if (left < right) {
int pivotIndex = partition(arr, left, right);
quickSort(arr, left, pivotIndex - 1);
quickSort(arr, pivotIndex + 1, right);
}
}
private static 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 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 = {10, 7, 8, 9, 1, 5};
quickSort(arr, 0, arr.length - 1);
System.out.println(Arrays.toString(arr));
}
}
Python 实现:
def quick_sort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr) - 1]
left = [x for x in arr[:-1] if x <= pivot]
right = [x for x in arr[:-1] if x > pivot]
return quick_sort(left) + [pivot] + quick_sort(right]
# 测试代码
arr = [10, 7, 8, 9, 1, 5]
sorted_arr = quick_sort(arr)
print(sorted_arr)
解释:
-
Java 版本:
- 使用递归实现快速排序,包含
partition
方法用于分区操作。 - 每次以数组的最后一个元素作为基准点(
pivot
),将数组分为比基准小的部分和比基准大的部分。 - 原地排序,通过交换元素实现分区。
- 使用递归实现快速排序,包含
-
Python 版本:
- 利用递归分治思想,基于 Python 的列表切片和列表推导式,简化了代码。
- 将数组分为两部分:比基准小的列表和比基准大的列表,递归调用后组合。
不得不说,Python确实简洁!