Javascript 实现四种基本排序

冒泡排序

描述: 比较相邻两个数的值, 如果前面的数据大于后面的数据,那就交换位置,这样每轮排序后就沉淀一个最大的最后面, 下一轮就不用 排序他了。
代码:

let arr = [89, 2, 34, 17, 0, 19, -1];
function fn(arr) {for (let i = 0 ; i < arr.length - 1; i ++) {for (let j = 0; j < arr.length - 1 - i; j ++) {if (arr[j] > arr[j + 1]) {[arr[j], arr[j + 1]] = [arr[j + 1], arr[j]]} }}return arr
}
let res = fn(arr);
console.log(res) // [-1, 0, 2, 17, 19, 34, 89]

时间复杂度:O(n^2) (毕竟两层循环,大家懂得)

选择排序

描述: 先选一个数认为他是最小的数,循环与后面的数字比较,如果后面的数小于这个数,则最小的数(min)赋值为当前数,继续这轮比较,知道这轮循环结束,然后min 和 当前选中的数调换位置。
代码:

let arr = [89, 2, 34, 17, 0, 19, -1];
function fn(arr) {for (let i = 0; i < arr.length; i ++) {let min = arr[i]for (let j = i + 1; j < arr.length; j ++) {if (arr[j] < min) {[arr[j], min] = [min, arr[j]]}}arr[i] = min}return arr
}
let res = fn(arr);
console.log(res) // [-1, 0, 2, 17, 19, 34, 89]

时间复杂度:O(n^2) (还是两层循环,大家懂得)

快速排序

描述: 找一个数来当基数 (mid), 然后循环和他比较,如果比他小,push left 如果比他大, push right, 然后递归 (科学研究表明,取最中间的数最排序最快,便于理解,我取第一个)

代码:

let arr = [89, 2, 34, 17, 0, 19, -1];
function fn(arr) {// 递归先定结束条件,切记切记if (arr.length < 2) {return arr}let left = [],right = [],mid = arr[0];for (let i = 1; i < arr.length; i ++) {if (arr[i] > mid) {right.push(arr[i])} else {left.push(arr[i])}}// 递归return fn(left).concat(mid, fn(right))
}
let res = fn(arr);
console.log(res) // [-1, 0, 2, 17, 19, 34, 89]

时间复杂度:最坏情况:O(n^2)
(这块建议你们查一下,别听我的)

插入排序

描述:想象你在斗地主,来了一个中间的牌要把他插到合适的位置
从第二个数开始,与第一个数比较,比他小,移动到前面,形成一个有序数组,以此类推。。。未排序的数据 与 已排序的数据从后往前扫描,如果比他小,就插到他前面

代码:

let arr = [89, 2, 34, 17, 0, 19, -1];
function fn(arr) {for (let i = 1; i < arr.length; i ++) {for (let j = i; j > 0; j --) {if (arr[j] < arr[j - 1]) {[arr[j], arr[j - 1]] = [arr[j - 1], arr[j]]}}}return arr
}
let res = fn(arr);
console.log(res) // [-1, 0, 2, 17, 19, 34, 89]

时间复杂度:O(n^2)

// 第一次开始写类似文章,有不对的和不好的地方希望大佬在评论区指出,
// 本人一定会多多汲取,为慢慢走上来的新人留下一点有用的东西。
// 谢谢!!!

Javascript 实现四种基本排序相关推荐

  1. 在js中加html_在HTML文档中嵌入JavaScript的四种方法

    在HTML里嵌入JavaScript 在HTML文档里嵌入客户端JavaScript代码有4中方法: 1.内嵌,放置在标签之间  (少): 2.放置在有 3.放置自HTML事件处理程序中,该事件处理程 ...

  2. PHP实现四种基本排序算法

    ###PHP实现四种基本排序算法 前提:分别用冒泡排序法, 快速排序法, 选择排序法, 插入排序法将下面数组中的值按照从小到大的顺序进行排序. (1)冒泡算法 $arr=array(1,43,54,6 ...

  3. JavaScript中四种不同的属性检测方式比较

    JavaScript中四种不同的属性检测方式比较 1. 用in方法 var o = {x:1}; "x" in o; //true "y" in o; //fa ...

  4. php四种基础排序算法的运行时间比较

    /*** php四种基础排序算法的运行时间比较* @authors Jesse (jesse152@163.com)* @date 2016-08-11 07:12:14*/ //冒泡排序法 func ...

  5. JAVA四种基本排序总结

    JAVA四种基本排序,包括冒泡法,插入法,选择法,SHELL排序法.其中选择法是冒泡法的改进,SHELL排序法是 插入法的改进.所以从根本上来说可以归纳为两种不同的排序方法:即:插入法&冒泡法 ...

  6. 基本的排序算法php,php四种基础排序算法

    原标题:php四种基础排序算法 曾经有网友问我关于面试题的问题,今天就发一个面试题笔试经常会出的排序算法,大家可以参考一下,如有问题可以给我留言. /** * php四种基础排序算法的运行时间比较 * ...

  7. [转载] java实现四种常用排序算法

    参考链接: 用Java排序 四种常用排序算法 ##注:从小到大排 ##冒泡排序## 特点:效率低,实现简单 思想:每一趟将待排序序列中最大元素移到最后,剩下的为新的待排序序列,重复上述步骤直到排完所有 ...

  8. 选择排序稳定吗_最常见的四种数据结构排序算法你不知道?年末怎么跳槽涨薪...

    前言 在学习数据结构的时候必然接触过排序算法,而且在日常开发中相信排序算法用得也比较多.而排序算法众多,各个效率又不同,难以记住.小编今天会介绍一些常用排序算法的特点和实现,对比不同排序算法的效率. ...

  9. PHP 四种基本排序算法的代码实现(2)

    2019独角兽企业重金招聘Python工程师标准>>> 许多人都说算法是程序的核心,算法的好坏决定了程序的质量.作为一个初级phper,虽然很少接触到算法方面的东西.但是对于基本的排 ...

最新文章

  1. 使用SeaJS实现模块化JavaScript开发
  2. javascript获取和设置URL中的参数
  3. iOS:给标签栏控制器的UITabbarItem添加点击动效
  4. k近邻算法C++二维情况下的实现
  5. VS2010主题设置及插件推荐
  6. 这道 Go 题目外网超过 80% 的人都答错了,你来试试...
  7. android 筛选菜单_使用C语言开发跨平台(win/android)应用(PainterEngine 快速入门教程)...
  8. Cocos2d-x建工程时避免copy文件夹和库
  9. 日本要向中国收二维码使用费?每人一分钱?
  10. 程序员简历大曝光,让HR哭笑不得,网友:太老实了!
  11. 财务报表分析-损益表,资产负债表,现金流,回报率
  12. vim 树形目录插件NERDTree安装
  13. ubuntu20.04安装nvidia显卡驱动/CUDA/cuDNN
  14. asp.net常用的命名空间及含义
  15. 支付宝支付接口的调用
  16. 抖音电商直播基地项目运营规划商业品牌计划书方案模板
  17. 给俺的 CSDN 博客加背景音乐 - 高大尚的《心经》背景音乐
  18. Python之控制台版增删改查(电影院信息管理)
  19. 用WWW::Mechanize来写twiki
  20. python中可以清空字典并保留变量的是,给定字典d,以下选项中可以清空该字典并保留变量的...

热门文章

  1. 关于ip地址(转载)
  2. 十分钟小课堂:IP地址及子网划分
  3. 【动态规划】磁带问题
  4. abaqus应力云图
  5. idm 添加 vivaldi 浏览器支持
  6. php解决m3u8卡顿,m3u8直播源为什么移动很流畅,电信很卡
  7. 基于HLW8112的交流测量原理及校准方法
  8. Scratch3.0连接EV3,WEDO2.0的方法视频讲解。
  9. TrueType字体轮廓矢量绘制
  10. Mars:加速数据科学的新方式