快速排序
快速排序
这是一个比较快的排序方式,中心思想是对在无序数组种找到一个基准值,然后找出比基准值小的元素和比基准值大的元素组成一个有序整体,在递归调用达到排序效果的一种算法
参考实现
Python 实现
def quickSort(arr): if arr is None or len(arr) < 2: return arr else: # 基准值 p = arr[0] less = [i for i in arr[1:] if i <= p] great = [i for i in arr[1:] if i > p] return quickSort(less) + [p] + quickSort(great) nums = [1, -4, 9, 5, 6] print(quickSort(nums))
Java 实现
public static void quickSort(int[] arr, int left, int right) { if (arr.length < 2) { return; } else if (left < right) { int pivot = partition(arr, left, right); quickSort(arr, left, right - 1); quickSort(arr, pivot + 1, right); } } public static int partition(int[] arr, int left, int right) { //指定一个基准值 int pivot = arr[left]; //若分区左边索引小于右边索引 while (left < right) { //从右边找到一个比基准小的数据 while (left < right && arr[right] >= pivot) { //若未找到,往前移动 right--; } arr[left] = arr[right]; while (left < right && arr[left] <= pivot) { left++; } arr[right] = arr[left]; } arr[left] = pivot; return left; } public static void main(String[] args) { int[] arr = {2, 6, 5, 1, 7, 0}; quickSort(arr, 0, arr.length - 1); for (int j : arr) { System.out.println(j); } }