排序总结JS版(冒泡排序、简单选择排序、快速插入排序、希尔排序、堆排序、快速排序)

六种内部排序算法比较:直接插入排序、希尔排序、冒泡排序、快速排序、选择排序、堆排序。 六种内部排序算法比较:直接插入排序、希尔排序、冒泡排序、快速排序、选择排序、堆排序。包含实验报告和源代码设计。 立即下载
/**
 * 常用排序总结
 * 排序分类:插入排序、交换排序、选择排序和归并排序。
 * Created by xj on 2017/3/8.
 */

    // var array = [3,1,8,9,10,4,5,6,7,2];
    var array = [0,10,20,8,25,35,6,18,30,5,15,28];
    var compareTime = 0;
    var changeTime = 0;
    /**
     *  冒牌排序
     *  最简单的交换排序,严格意义上来说不算标准的冒泡排序,因为不满足“两两比较相邻记录”的条件。
     *  思路:每一个关键字都和它后面的关键字比较,如果当前关键字不是最小的记录,则与相比较的关键
     *  字交换位置,这样当前位置的关键字再一次循环后一定是最小值。
     *  复杂度:本身有序就是n-1次比较;若正好倒序,则需要进行1+2+3+……+(n-1) = n(n-1)/2次比较,因为总的时间复杂度为O(n²)
     */
    document.getElementById("show").innerHTML = array;

    function sortBubble1() {
        console.log("------交换排序------");
        console.log("---" + array + "------");
        for(var i = 0; i < this.array.length; i++)
        {
            for(var j = i; j < this.array.length; j++)
            {
                if(this.array[j] < this.array[i])
                {
                    this.change(i, j);
                }
                compareTime ++;
            }
            console.log("---" + this.array + "---");
        }
        console.log(this.array + "\n compareTime = " + compareTime + "\n changeTime = " + changeTime);
    }
    /**
     *  冒牌排序(正版)
     *  真正的冒泡排序,每次循环从序列的末尾开始两两比较,若关键字(n-1)大于n,则交换位置,继续比较(n-2)和(n-1),
     *  这样即保证每次循环第一个关键字都是最小值,而且序列后边的较小的关键字也会相对前移。
     */
    function sortBubble2() {
        console.log("------冒泡排序------");
        console.log("---" + array + "------");
        for(var i = 0; i < array.length; i++)
        {
            for(var j = array.length-2; j >= i; j--)
            {
                if(this.array[j] > this.array[j+1])
                {
                    this.change(j, j+1);
                }
                compareTime ++;
            }
            console.log("---" + this.array + "---");
        }
        console.log(this.array + "\n compareTime = " + compareTime + "\n changeTime = " + changeTime);
    }
    /**
     *  冒牌排序(改进版)
     *  改进的冒泡排序,若存在当一定情况下,序列已经有序,没有必要进行重复的循环判断,减少冗余的比较次数。
     */
    function sortBubble3() {
        console.log("------冒泡排序改进------");
        console.log("---" + array + "------");
        var flag = true;                                    //进入循环
        for(var i = 0; i < array.length && flag; i++)
        {
            flag = false;                                   //循环判断关键字置false,若此次循环中没有进行数据移动,则可以确定此时序列已经有序,无需再次进行比较和迁移
            for(var j = array.length-2; j >= i; j--)
            {
                if(this.array[j] > this.array[j+1])
                {
                    this.change(j, j+1);
                    flag = true;                            //若有数据移动,说明序列仍是无序,有必要再次进行循环
                }
                compareTime ++;
            }
            console.log("---" + this.array + "---");
        }
        console.log(this.array + "\n compareTime = " + compareTime + "\n changeTime = " + changeTime);
    }
    /**
     *  简单选择排序
     *  思想:通过n-1次关键字之间的比较,从n-1+1个记录中选出关键字最小的记录,并和第i(1<=i<=n)个记录交换之。
     *  优点:相对冒泡排序来说,交换移动数据的次数少了,这样就节约了相应的时间。
     *  复杂度:比较次数一样多。对于交换次数而言,最好的时候交换0次,最差的时候交换n-1次。总的时间复杂度O(n²)
     *  总结:尽管复杂度相同,但简单选择排序在性能上还是优于冒泡排序。
     */
    function sortSelect() {
        console.log("------简单选择排序------");
        console.log("---" + array + "------");
        var min = 0;

        for(var i = 0; i < array.length; i++)
        {
            min = i;
            for(var j = i; j < array.length; j++)
            {
                if(this.array[j] < this.array[min])
                {
                    min = j;
                }
                compareTime ++;
            }
            if(min != i)
            {
                this.change(min, i);
            }
            console.log("---" + this.array + "---");
        }
        console.log(this.array + "\n compareTime = " + compareTime + "\n changeTime = " + changeTime);
    }
    /**
     *  直接插入排序
     */
    function sortInsert() {
        console.log("------直接插入排序------");
        console.log("---" + array + "------");
        var temp = null;
        var i,j = null;
        for(i = 1; i < array.length; i++)
        {
            if(array[i] < array[i-1])
            {
                temp = array[i];
                for(j = i-1; array[j] > temp; j--)
                {
                    array[j+1] = array[j];
                    changeTime ++;
                }
                array[j+1] = temp;
            }
            compareTime ++;
            console.log("---" + this.array + "---");
        }
        console.log(this.array + "\n compareTime = " + compareTime + "\n changeTime = " + changeTime);
    }
    /**
     *  希尔排序
     *  跳跃分隔策略:将相距某个“增量”的记录组成一个子序列,这样才能保证在子序列内分别就行插入排序后得到的结果是基本有序而不是局部有序。
     *  算法复杂度:O(n³/²)
     *  注意:非稳定排序
     *  思想:希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量
     *  减至1时,整个文件恰被分成一组,算法便终止。
     *  类别:插入排序
     */
    function sortSheel() {
        console.log("------希尔排序------");
        console.log("---" + array + "------");
        var temp = null;
        var i,j = null;
        // var increment = array.length;
        var increment = 12
        do
        {
            increment = parseInt(increment/3 + 1);                                  //增序数列,此处最难理解。最优增量值有待商榷
            for(i = increment; i < array.length; i++)                               //测试最好数据为dlta[k]=2E(t-k+1)-1(0<=k<=t<=㏒₂(n+1))
            {
                if(array[i] < array[i-increment])                                   //判断是否交换数据
                {
                    temp = array[i];                                                //移动数据之前,先把要移动的数据存储在temp中
                    for(j = i-increment; j >= 0 && array[j] > temp; j-=increment)   //此处循环继续进行的判断条件比较精髓,当j-=increment还能继续满足条件时
                    {                                                               //要移动的数据array[j]跟temp比较大会继续移动
                        array[j+increment] = array[j];                              //移动数据
                        compareTime ++;
                        changeTime ++;
                    }
                    array[j+increment] = temp;                                      //上边循环内确定要移动的数据,这里确定最终交换的数据
                }
                compareTime ++;
            }
            console.log("---" + this.array + "---");
        }
        while (increment > 1);
        console.log(this.array + "\n compareTime = " + compareTime + "\n changeTime = " + changeTime);
    }
    /**
     * 堆排序:选择排序
     * 思想:利用大顶堆进行排序的方法。将待排序的序列构造成一个大顶堆。此时,整个序列的最大值就是堆顶的根节点。将它移走(其实就是讲其与堆
     * 堆数组末尾元素交换,此时末尾元素就是最大值),然后将剩余的n-1个序列重新构造成一个堆,这样就会得到n个元素中次大值。如此反复执行,便
     * 能得到一个有序的序列了。
     * 复杂度:O(n㏒n)
     * 稳定:不稳定。
     * 注意:出事构建堆排序所需要比较的次数较多,不适合排序序列个数很少的情况。
     * @param i
     */
    function sortHeap() {
        console.log("------堆排序------");
        console.log("---" + array + "------");

        var length = array.length - 1;                      //此处为了将排序数组和js数组结合,只排序js数组下标>1的序列
        for (var i = parseInt(length/2); i > 0; i--)        //0-i表示有孩子的结点,从i开始递减。目的:把数组变成大顶堆
        {
            adjustHeap(i, length);
        }
        console.log("---" + this.array + "---");
        for (var j = length; j > 1; j--)
        {
            change(j, 1);                                   //将整理好的大顶堆数字最大的跟某位只交换,让末尾值最大
            adjustHeap(1, j-1);                             //把最大值去除,即将上边移动的元素去除后重新整理成大顶堆
            console.log("---" + this.array + "---");
        }
        console.log(this.array + "\n compareTime = " + compareTime + "\n changeTime = " + changeTime);
    }
    function adjustHeap(index, length) {                    //结点和长度
        var temp = array[index];                            //将结点的值放入temp
        for (var j = 2 * index; j <= length; j *= 2)        //沿关键字较大的孩子结点向下筛选
        {
            if (j < length && array[j] < array[j+1])        //判断孩子结点大小,以便取较大值跟结点交换
            {
                j++;                                        //如果左孩子的值小于右孩子的值,则将下标增加一,让j指向大值的下标
            }
            compareTime ++;
            if (temp >= array[j])                           //判断结点和较大孩子结点的大小
            {
                break;                                      //如果结点值大,跳出循环
            }
            compareTime ++;
            array[index] = array[j];                         //如果结点的值小,将大值赋给结点
            index = j;
        }
        array[index] = temp;                                 //交换值
    }
    /**
     * 快速排序
     * 基本思想:通过一趟排序将待排序的记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,即可分别对着两部分
     *          积蓄进行排序,以达到整个序列有序的目的。
     * 复杂度:O(n㏒n)
     * 稳定: 不稳定
     * 注意:快速排序成为20世纪十大算法之一。
     * @param i
     * @param j
     */
    function sortQ() {
        sortQuick(0, array.length-1);   //为了递归调用,单独写个排序的方法。
    }
    function sortQuick(low, high) {
        var pivot = null;   //枢轴
        if (low < high)
        {
            pivot = partition(low, high);   //将待排序数组一分为二,并返回枢轴的值
            sortQuick(low, pivot-1);        //对低子表递归排序
            sortQuick(pivot+1, high);       //对高子表递归排序
        }
    }
    function partition(low, high) {
        while (low < high)
        {
            var pivotKey = array[low];      //默认第一个数字为枢轴
            while (low < high)              //从表两端交替向中间扫描
            {
                while (low < high && array[high] >= pivotKey)
                {
                    high--;
                }
                change(low, high);          //将此枢轴记录小的记录交换到低端
                while (low < high && array[low] <= pivotKey)
                {
                    low++;
                }
                change(low, high);          //将此枢轴记录大的记录交换到高端
            }
        }
        return low;                         //返回枢轴所在位置
    }
    function change(i, j) {                 //交换位置
        var temp = this.array[i];
        this.array[i] = this.array[j];
        this.array[j] = temp;
        changeTime ++;
    }

启动

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
    </script>
</head>
<body>
    <button type="button" onclick="refresh()">刷新</button>
    <div id="show"></div>
    <div id="result"></div>
</body>
<script src="src/sort/Sort.js"></script>
<script src="src/utils/Utils.js"></script>
<script type="text/javascript">
    //        sortBubble1();
    //        sortBubble2();
    //        sortBubble3();
    //        sortSelect();
    //        sortInsert();
    //        sortSheel();
//    sortHeap();
    sortQ();
    function refresh() {
        window.location = window.location;
    }

    document.getElementById("result").innerHTML = array;
</script>
</html>
手把手教你解决Kernel panic报错:init找不到的5种排查方法(附NFS挂载实战) 本文深入解析了Linux系统启动时出现“Kernel panic - not syncing: No working init found”报错的根本原因,并提供了五种系统性的排查方法。文章结合NFS挂载根文件系统的实战场景,详细阐述了从动态链接库依赖、内核引导参数、NFS权限配置、文件系统完整性到内核配置干扰的完整排查路径,帮助开发者快速定位并解决这一常见的系统启动故障。 阅读详情

相关推荐

从零开始搭建企业级安全扫描平台:基于Docker的Greenbone和ClamAV部署指南

本文提供了一份基于Docker容器技术,从零开始搭建企业级安全扫描平台的实战指南。详细介绍了如何部署和集成漏洞扫描工具Greenbone与病毒扫描工具ClamAV,涵盖架构设计、Docker环境优化、容器化部署步骤以及平台集成与监控方案,帮助企业构建自动化、可扩展的安全防御核心组件。

delta的博客 756

JS——冒泡排序

冒泡排序实现过程 冒泡排序 冒泡排序是一种非常基础的排序方法,其原理就是把一个数组中的每一个数从前往后依次进行比较,然后根据大小交换位置,每一轮的比较都确定出一个当轮比较的最大值,最终实现数组的大小排序。从下到大排序下面我们用JS实现冒泡排序。 实现过程 举例:假设数组有n个数,需要n轮,而每一轮中比较的次数都要减去已经确定的数值,即第i轮需要比较的次数为n-i,可以用一个嵌套for循环来实现。 为了看清楚整个排序的过程,我们将每一次排序的结果输出到控制台,代码如下: var arr = [4,23,10.

weixin_52148548的博客 2万+

android 运动目标检测_MindSpore应用案例:AI对篮球运动员目标的检测

MindSpore作为一个端边云协同的开源的全场景AI框架,今年3月份开源以来,受到了业界的广泛关注和应用,欢迎大家参与开源贡献、模型众智合作、行业创新与应用、学术合作等,贡献您在云侧、端侧 (HiMindSpore 应用程序)、边侧以及安全领域的应用案例。MindSpore与您在AI领域共同成长,让AI使能千行百业,释放出强大的生产力。本文讲述的是MindSpore对篮球运动员目标的检测应用,通...

weixin_33603813的博客 834

js实现冒泡排序

冒泡排序原理: 冒泡排序算法的原理如下: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比比较 白话就是:比如有6个数,你需要比较5趟,这......

不想起床 7万+

海量数据 / Vastbase 深度研究笔记 v3.1

v3.1 重点修订:在 v3.0 审慎版基础上,新增“2026 新变量”章节,纳入 7 亿级定增、HTAP / 多模态时序数据库、G100 V3.0 Build 8 的 3CM+2DN 高可用补强、pgvector / V100 / AI 多模叙事,以及集成服务基因与标准软件 ARR 的拉扯。核心关注点是:Vastbase 能否把 openGauss 生态红利、数据库产品矩阵和行业交付能力,转化为可持续、可复购、低边际成本的标准软件收入。海量不是没有业务基本盘,也不是马上失血致死;客户越多,服务债越大。

喝醉酒的小白 548

深入解析 RLHF(Reinforcement Learning from Human Feedback)

随着人工智能(AI)技术的快速发展,大规模语言模型(如 OpenAI 的 GPT、Anthropic 的 Claude 等)已经能够生成高质量的文本。RLHF 是一种基于强化学习(Reinforcement Learning, RL)的优化方法,它结合人类反馈(Human Feedback)来训练奖励模型(Reward Model, RM),进而优化语言模型的生成策略。整个强化学习的目标是找到最优策略 π∗\pi^*π∗,使得模型在与环境交互的过程中,最大化累积奖励。RLHF 是一种结合强化学习(RL)

lqq 1771

js冒泡排序的四种方法

更新个基础知识比较简单 仅供参考 //参考排序的数组 var arr = [3, 2, 5, 1, 4] 第一种 这种方法冒泡排序 比较相邻的两个元素,如果前一个比后一个大,则交换位置。 第一轮把最大的元素放到了最后面。 由于每次排序最后一个都是最大的,所以之后按照步骤1排序最后一个元素不用比 function arr_sort(data) { var temp for(var i = 0; i<data.length-1;i++) { for(var j = 0; j&lt.

wjw0125的博客 3444

Simulink中扩张状态观测器ESO搭建与参数整定实战

扩张状态观测器(ESO)是自抗扰控制(ADRC)的核心,用于估计系统总扰动并实时补偿。其原理是将扰动扩张为状态变量,通过观测器带宽配置增益,实现扰动估计。在Simulink中搭建ESO可直观验证连续与离散域性能,解决参数整定与噪声折中问题。典型应用包括运动控制、电力电子和机器人驱动。本文基于MATLAB/Simulink,详细讲解线性ESO的模型结构、参数计算、离散化实现及常见问题排查,帮助读者从零搭建并调试ESO仿真。

weixin_34116482的博客 221

JavaScript:数组排序(冒泡排序)

本文主要记录JavaScript中的数组排序,Array对象sort()方法的相关内容,以及冒泡排序的实现过程;

m0_65029152的博客 5290

卷积操作复杂度公式推导

复杂度Hout⋅Wout⋅Cout⋅Cin⋅k2\text{复杂度} = H_{\text{out}} \cdot W_{\text{out}} \cdot C_{\text{out}} \cdot C_{\text{in}} \cdot k^2复杂度Hout​⋅Wout​⋅Cout​⋅Cin​⋅k2该公式反映了卷积核作用于每个像素时的局部操作和跨通道的计算需求。卷积计算复杂度与输入尺寸线性相关。

qq_41037856的博客 1306

解读Autoware.Universe规划模块:Behavior Path Planner

Behavior Path Planner是一个基于行为生成不同形态路径的路径规划器,负责生成 基于交通状况的路径(path), 车辆可以移动的可行驶区域(drivable area)(在路径消息中定义), 将被发送到车辆接口的转向信号(turn signal) 命令。

策 5491

1.JS排序算法之冒泡排序

咕嘟咕嘟...来学习以下冒泡算法吧

小小鲸鱼的后花园 3402

CKS-CN考试之路----03

这题不需要去生成image和生成deployment所以只需要去检测对应的值即可。编辑/cks/docker/Dockerfile,修改最后第二行的值。编辑/cks/docker/deployment.yaml。

Q先生 824

Js实现数组排序

Js实现数组排序 常用排序的Js实现方案,包括原型链方法调用、简单选择排序、冒泡排序、插入排序、快速排序、希尔排序、堆排序、归并排序。 原型链方法调用 var arr = [1, 7, 9, 8, 3, 2, 6, 0, 5, 4]; arr.sort((a,b) => a-b); // arr.__proto__.sort console.log(arr); // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 简单选择排序 var arr = [1, 7, 9, 8, 3, 2,

WindRunnerMax 1498

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

js实现十大排序

冒泡排序 //冒泡排序 相邻的两位排序 每一趟排序都把未排序的数字中最大的放到最后 function maoPao(arr){ for(let i = 0;i < arr.length;i++){//外层循环的是趟数 for(let j = 0;j < arr.length-i;j++){//内层循环的是每一趟相邻的两个数,每次循环结束的地方都是总长-趟数,因为已经走了几趟就有几个数字被排序好了

qq_51983617的博客 740

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

常见排序算法的JavaScript实现

常见排序算法的JavaScript实现才疏学浅,仅供学习交流~//测试用例 //var arr=[9,1,5,8,3,7,4,6,2]; var arr=[50,10,90,30,70,40,80,60,20]; var arr1=insertionSort(arr); //var arr2=banaryInsertionSort(arr); //var arr3=shellSort(arr); /

神级修炼~ 494

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

8大排序算法原理及JS实现

这里写自定义目录标题排序算法冒泡排序选择排序功能快捷键如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 排序算法 冒泡排序 冒泡排序(Bubble Sorting...

n_ffff的博客 478

[算法]排序

基础排序算法大致分为三大类,选择排序、插入排序、交换排序。下面是三类排序算法的一些javascript实现整理。 选择排序 简单选择排序 // 选择排序 function selection_sort(arr) { var n = arr.length; var i, j, min, t; for( i =0; i < n -1; i ++) ...

weixin_30338461的博客 72

diff算法 阮一峰_JavaScript实现十大排序算法

一 : 冒泡排序人们开始学习排序算法时,通常都先学冒泡算法,因为它在所有排序算法中最简单。然而, 从运行时间的角度来看,冒泡排序是最差的一个,接下来你会知晓原因冒泡排序比较所有相邻的两个项,如果第一个比第二个大,则交换它们。元素项向上移动至 正确的顺序,就好像气泡升至表面一样,冒泡排序因此得名。export function bubbleSort(arr: number[]) { for ...

weixin_42342626的博客 2436

工业机器人开源项目全解析:控制软件、GUI与STL文件复现指南

工业机器人是集机械、电子、控制于一体的复杂系统,其核心在于多轴联动与实时控制。开源项目通过开放控制软件、GUI和STL文件,降低了系统集成门槛。基于STM32或类似MCU的实时控制层,结合CAN总线通信,实现1kHz电流环与运动学解析逆解,确保轨迹精度。GUI采用Qt框架,独立通信线程避免界面卡顿,3D可视化渲染STL模型。STL文件支持3D打印或CNC加工,但需注意打印参数与公差配合。此类项目适用于教学、科研及小团队快速搭建机械臂,实现视觉抓取或力控扩展。本文深入拆解工业机器人开源方案,涵盖从硬件选型到运

weixin_34075268的博客 310

常见的排序

一、插入排序 折半查找 概念:折半查找,又称二分查找,它仅适用于有序的顺序表。 基本思想及查找步骤: 以low、middle和high表示待查区间的上界、中间位置和下界。low的初始值是0,high的初始值是length-1; (1)让middle等于(low+high)/2的整数部分; (2)比较中间位置记录的关键字与给定的K值: a. 相等:查找成功 b. 大于:给定的K值在m...

tanli的博客 546

如何使用Go、Python、Java、Rust、C、JS等6种编程语言实现六大排序算法:插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序

本文将深入解析并展示如何使用六种不同的编程语言(Go、Python、Java、Rust、C、JavaScript)实现六大经典排序算法,包括:插入排序、希尔排序、选择排序、冒泡排序、堆排序和快速排序。通过本教程,你将不仅能够理解这些算法的核心思想,还能掌握如何在多个流行的编程语言中实现它们。通过本文的学习,你将掌握如何用Go、Python、Java、Rust、C、JavaScript等6种编程语言实现经典排序算法,提升你在数据处理、算法设计等方面的能力。无论你是学习算法、优化程序,还是准备面试

猫头虎技术团队:授渔优于赠鱼,兴趣引领智慧,探索之乐尤显珍贵。商务合作+:Libin9iOak ,万粉变现+:优快云WF,猫头虎承诺每年免费为100名C站创作者做账号流量诊断服务!全网搜:猫头虎技术团队,点击文章底部名片或直接私信我一切皆可谈,快找虎哥! 1万+

Javascript排序算法(冒泡排序、快速排序、选择排序、堆排序、插入排序、希尔排序)详解

排序算法是计算机科学中的基础,用于将一组数据按照某种顺序重新排列。JavaScript中常见的排序算法包括冒泡排序、选择排序、插入排序、快速排序、归并排序等。

警警的博客 1973

Javascript 实现冒泡排序、选择排序、插入排序、归并排序、快速排序、希尔排序、堆排序

1. 冒泡排序、选择排序、插入排序。 它们的平均时间复杂度都为 O(n2)。 1.1 冒泡排序 冒泡排序只会操作相邻的两个数据。 每次冒泡操作都会对相邻的两个元素进行比较,看是否满足大小关系要求。如果不满足就让它俩互换。 一次冒泡会让至少一个元素移动到它应该在的位置,重复 n 次,就完成了 n 个数据的排序工作。 // 冒泡排序 const bubbleSort = arr => { const length = arr.length; if (length <= 1) ret

BLUEHEART 2881

冒泡、简单选择、直接插入、希尔、快速、归并、堆排序算法:JavaScript实现+分析

冒泡 n 次比较相邻两数并交换找到最值,然后 n-1 次比较找到次值……较小的数字像气泡一样浮出。 这里我引入flag排除,已经有序却一直遍历 function bubbleSort(arr){ const n=arr.length; let flag=1,i,j; for(i=0;i<n-1&&flag;i++){ //最坏的情况需要依次比较出最小值、次小值、次次小值 flag=0;//如果交换了就变 for

hhhh 2955

js实现常用排序算法 --冒泡排序,选择排序, 插入排序,快速排序,

JavaScript实现十大常用排序算法 冒泡排序 选择排序 插入排序 快速排序 归并排序 希尔排序 堆排序 计数排序 桶排序 计数排序 冒泡排序: 原理 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一...

知无涯 4397
上一篇: Cocos2d-JS 开发小笔记
下一篇: Git终端常用命令行(工作流程)
轩小川
博客等级 码龄16年 46粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

轩小川

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值