排序算法,快速排序

是什么

快速排序(Quick Sort)算法是在冒泡排序的基础上进行改进的一种算法,从名字上看就知道该排序算法的特点是快、效率高,是处理大数据最快的排序算法之一

实现的基本思想是:通过一次排序将整个无序表分成相互独立的两部分,其中一部分中的数据都比另一部分中包含的数据的值小

然后继续沿用此方法分别对两部分进行同样的操作,直到每一个小部分不可再分,所得到的整个序列就变成有序序列

简而言之,通常就是以某个基准(一般都是最左边),跟数组的其他值比对,比基准大的不动,比基准小的值就挪到左边,循环重复这个动作,如下图所示

如何实现

javascript 复制代码
function insertionSort(arr) {
    const len = arr.length;
    let preIndex, current;
    for (let i = 1; i < len; i++) {
        preIndex = i - 1;
        current = arr[i];
        while(preIndex >= 0 && arr[preIndex] > current) {
            arr[preIndex+1] = arr[preIndex];
            preIndex--;
        }
        arr[preIndex+1] = current;
    }
    return arr;
}

应用场景

插入排序时间复杂度是 O(n2),适用于数据量不大,算法稳定性要求高,且数据局部或整体有序的数列排序

文章参考来源:
https://vue3js.cn/interview/algorithm/insertionSort.html#二、如何实现

相关推荐
H_BB2 分钟前
LRU缓存
数据结构·c++·算法·缓存
历程里程碑2 小时前
LeetCode热题11:盛水容器双指针妙解
c语言·数据结构·c++·经验分享·算法·leetcode·职场和发展
wadesir9 小时前
Rust中的条件变量详解(使用Condvar的wait方法实现线程同步)
开发语言·算法·rust
yugi9878389 小时前
基于MATLAB实现协同过滤电影推荐系统
算法·matlab
TimberWill9 小时前
哈希-02-最长连续序列
算法·leetcode·排序算法
Morwit9 小时前
【力扣hot100】64. 最小路径和
c++·算法·leetcode
leoufung9 小时前
LeetCode 373. Find K Pairs with Smallest Sums:从暴力到堆优化的完整思路与踩坑
java·算法·leetcode
wifi chicken10 小时前
数组遍历求值,行遍历和列遍历谁更快
c语言·数据结构·算法
胡楚昊10 小时前
NSSCTF动调题包通关
开发语言·javascript·算法
Gold_Dino11 小时前
agc011_e 题解
算法