排序算法之快速排序

快速排序(Quick Sort)是一种高效的排序算法,基于分治法(Divide and Conquer)的思想。它的核心是通过选择一个基准元素(pivot),将列表分为两部分:一部分小于基准元素,另一部分大于基准元素,然后递归地对这两部分进行排序。快速排序的平均时间复杂度为 O(n log n),在实际应用中性能优异。

算法步骤

1.选择基准元素

基准元素可以是列表中任何一个元素:第一个、最后一个、中间的,都可以

2.分区

将列表进行排序,让大于基准值的数据在列表右侧,大于基准值的数据在列表左侧

3.递归排序

对基准左右侧分别进行递归排序,之后随后排序结束。

代码实现

JAVA

import java.util.Arrays;

public class quickSort {
    static void main(String[] args) {
        int[] arr = new int[]{14,65,3,78,95,4,25,61,88,91,76,25,43,74};
        quick(arr,0, arr.length - 1);
        System.out.println(Arrays.toString(arr));
    }

    public static void quick(int[] arr, int start, int end) {
        if (start >= end){
            return;
        }
        //1.取中间值作为基准值
        int pivot = arr[(start + end) / 2];
        int low = start;
        int high = end;
        //2.排序
        while (low < high) {
            while (low < high && pivot <= arr[high]) {
                high--;
            }
            arr[low] = arr[high];
            while (low < high && pivot >= arr[low]){
                low++;
            }
            arr[high] = arr[low];
        }
        arr[low] = pivot;
        //3.递归调用进行排序
        //对基准值前面的序列进行递归
        quick(arr,start,low -1);
        //对基准值后面的序列进行递归
        quick(arr,low+1,end);
    }

}