资讯专栏INFORMATION COLUMN

前端之多种排序方式

ShevaKuilin / 2993人阅读

摘要:前言排序是编程中很基础却很有学问的算法。常见的内部排序算法有插入排序希尔排序选择排序冒泡排序归并排序快速排序堆排序基数排序等。本文主要阐述前端面试中最常问的三种排序冒泡排序选择排序,其他排序方法详情点我。冒泡排序算法描述比较相邻的元素。

前言

排序是编程中很基础却很有学问的算法。常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。本文主要阐述前端面试中最常问的三种排序:冒泡排序、选择排序,其他排序方法详情点我。
*本文参考链接点我。

冒泡排序

算法描述:

比较相邻的元素。如果前一个比后一个大,就交换他们两个,这样循环到最后,最后一位数将是最大的数。

最后一个数确定了后不再进行比较,重复步骤1,不断确定新一轮最大的数值后将其固定不比较,最后所有数据比较完则完成排序。

动图演示:

代码实现:

function bubbleSort(arr) {   
    for (var i = 0; i < arr.length - 1; i++) {   
        for (var j = 0; j < arr.length - 1 - i; j++) {   
            if (arr[j] > arr[j+1]) {        // 相邻元素两两对比   
                var temp = arr[j+1];        // 元素交换   
                arr[j+1] = arr[j];   
                arr[j] = temp;   
            }   
        }   
    }   
    return arr;   
}
选择排序

算法描述:每次都找一个最大或者最小的排在开始即可。例如,你想从小到大排列,就找出最大的放第一位,通过循环不断找出当时最大值并插入第一位,最后就会从小到大排列了。

动图演示:

代码实现:

function selectionSort(arr) {      
    var minIndex, temp;                                               
    for (var i = 0; i < arr.length - 1; i++) {   
        minIndex = i;   
        for (var j = i + 1; j < arr.length ; j++) {   
            if (arr[j] < arr[minIndex]) {     // 寻找最小的数   
                minIndex = j;                 // 将最小数的索引保存   
            }   
        }   
        temp = arr[i];   
        arr[i] = arr[minIndex];   
        arr[minIndex] = temp;   
    }   
    return arr;   
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/110034.html

相关文章

  • 后端知识- 收藏集 - 掘金

    摘要:常见的八大排序算法,他们之间关系如下被人忽视的面向对象的六大原则后端掘金前言作为文集的第一篇,我觉得有必要介绍一下大概的写作规划。 Java多线程干货系列—(四)volatile关键字| 掘金技术征文 - 掘金原本地址:Java多线程干货系列—(四)volatile关键字博客地址:http://tengj.top/ 前言 今天介绍下volatile关键字,volatile这个关键字可能...

    Youngdze 评论0 收藏0
  • 后端知识- 收藏集 - 掘金

    摘要:常见的八大排序算法,他们之间关系如下被人忽视的面向对象的六大原则后端掘金前言作为文集的第一篇,我觉得有必要介绍一下大概的写作规划。 Java多线程干货系列—(四)volatile关键字| 掘金技术征文 - 掘金原本地址:Java多线程干货系列—(四)volatile关键字博客地址:http://tengj.top/ 前言 今天介绍下volatile关键字,volatile这个关键字可能...

    scola666 评论0 收藏0
  • JavaScript专题系列文章

    摘要:专题系列共计篇,主要研究日常开发中一些功能点的实现,比如防抖节流去重类型判断拷贝最值扁平柯里递归乱序排序等,特点是研究专题之函数组合专题系列第十六篇,讲解函数组合,并且使用柯里化和函数组合实现模式需求我们需要写一个函数,输入,返回。 JavaScript 专题之从零实现 jQuery 的 extend JavaScritp 专题系列第七篇,讲解如何从零实现一个 jQuery 的 ext...

    Maxiye 评论0 收藏0
  • CSS学习笔记(十六) CSS最佳实践可维护性篇

    摘要:国内各大公司都已经投入使用,在一些常见的网站,如淘宝腾讯小米等移动站点,随处可见其踪影。变革之腾讯手机淘宝的设计与实现前端乱炖适配总结样式重置上文已提及,这里推荐阅读同学写的专题文章。 前言 CSS代码难维护众所皆知。 为一个元素设置样式的方式可以通过定义的class、定义的id、元素的标签名、元素的属性等选择器以及这些选择器的组合来实现; 作用于某个元素上的样式又可能来自单个样式规...

    newtrek 评论0 收藏0
  • CSS学习笔记(十六) CSS最佳实践可维护性篇

    摘要:国内各大公司都已经投入使用,在一些常见的网站,如淘宝腾讯小米等移动站点,随处可见其踪影。变革之腾讯手机淘宝的设计与实现前端乱炖适配总结样式重置上文已提及,这里推荐阅读同学写的专题文章。 前言 CSS代码难维护众所皆知。 为一个元素设置样式的方式可以通过定义的class、定义的id、元素的标签名、元素的属性等选择器以及这些选择器的组合来实现; 作用于某个元素上的样式又可能来自单个样式规...

    keke 评论0 收藏0

发表评论

0条评论

ShevaKuilin

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<