2020年4月25日

快速排序

算法原理

快速排序采用分治思想,通过一趟排序将数据分割成独立的两部分,具体流程:

  1. 基准选取 :选择数组中的一个元素作为基准(pivot)
  2. 分区操作 :将数组分为两个子数组,小于基准的放左边,大于基准的放右边
  3. 递归排序 :对左右子数组递归进行快速排序

代码实现

export function quickSortBySplice(arr: number[]): number[] {
    if (arr.length <= 1) {
        return arr;
    }
    const pivotIndex = Math.floor(arr.length / 2);
    const pivot = arr.splice(pivotIndex, 1)[0];
    const left: number[] = [];
    const right: number[] = [];
    for (let i = 0; i < arr.length; i++) {
        if (arr[i] < pivot) {
            left.push(arr[i]);
        } else {
            right.push(arr[i]);
        }
    }
    return quickSortBySplice(left).concat([pivot], quickSortBySplice(right));
}
Share