Javascript 实现四种基本排序
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 实现四种基本排序相关推荐
- 在js中加html_在HTML文档中嵌入JavaScript的四种方法
在HTML里嵌入JavaScript 在HTML文档里嵌入客户端JavaScript代码有4中方法: 1.内嵌,放置在标签之间 (少): 2.放置在有 3.放置自HTML事件处理程序中,该事件处理程 ...
- PHP实现四种基本排序算法
###PHP实现四种基本排序算法 前提:分别用冒泡排序法, 快速排序法, 选择排序法, 插入排序法将下面数组中的值按照从小到大的顺序进行排序. (1)冒泡算法 $arr=array(1,43,54,6 ...
- JavaScript中四种不同的属性检测方式比较
JavaScript中四种不同的属性检测方式比较 1. 用in方法 var o = {x:1}; "x" in o; //true "y" in o; //fa ...
- php四种基础排序算法的运行时间比较
/*** php四种基础排序算法的运行时间比较* @authors Jesse (jesse152@163.com)* @date 2016-08-11 07:12:14*/ //冒泡排序法 func ...
- JAVA四种基本排序总结
JAVA四种基本排序,包括冒泡法,插入法,选择法,SHELL排序法.其中选择法是冒泡法的改进,SHELL排序法是 插入法的改进.所以从根本上来说可以归纳为两种不同的排序方法:即:插入法&冒泡法 ...
- 基本的排序算法php,php四种基础排序算法
原标题:php四种基础排序算法 曾经有网友问我关于面试题的问题,今天就发一个面试题笔试经常会出的排序算法,大家可以参考一下,如有问题可以给我留言. /** * php四种基础排序算法的运行时间比较 * ...
- [转载] java实现四种常用排序算法
参考链接: 用Java排序 四种常用排序算法 ##注:从小到大排 ##冒泡排序## 特点:效率低,实现简单 思想:每一趟将待排序序列中最大元素移到最后,剩下的为新的待排序序列,重复上述步骤直到排完所有 ...
- 选择排序稳定吗_最常见的四种数据结构排序算法你不知道?年末怎么跳槽涨薪...
前言 在学习数据结构的时候必然接触过排序算法,而且在日常开发中相信排序算法用得也比较多.而排序算法众多,各个效率又不同,难以记住.小编今天会介绍一些常用排序算法的特点和实现,对比不同排序算法的效率. ...
- PHP 四种基本排序算法的代码实现(2)
2019独角兽企业重金招聘Python工程师标准>>> 许多人都说算法是程序的核心,算法的好坏决定了程序的质量.作为一个初级phper,虽然很少接触到算法方面的东西.但是对于基本的排 ...
最新文章
- 使用SeaJS实现模块化JavaScript开发
- javascript获取和设置URL中的参数
- iOS:给标签栏控制器的UITabbarItem添加点击动效
- k近邻算法C++二维情况下的实现
- VS2010主题设置及插件推荐
- 这道 Go 题目外网超过 80% 的人都答错了,你来试试...
- android 筛选菜单_使用C语言开发跨平台(win/android)应用(PainterEngine 快速入门教程)...
- Cocos2d-x建工程时避免copy文件夹和库
- 日本要向中国收二维码使用费?每人一分钱?
- 程序员简历大曝光,让HR哭笑不得,网友:太老实了!
- 财务报表分析-损益表,资产负债表,现金流,回报率
- vim 树形目录插件NERDTree安装
- ubuntu20.04安装nvidia显卡驱动/CUDA/cuDNN
- asp.net常用的命名空间及含义
- 支付宝支付接口的调用
- 抖音电商直播基地项目运营规划商业品牌计划书方案模板
- 给俺的 CSDN 博客加背景音乐 - 高大尚的《心经》背景音乐
- Python之控制台版增删改查(电影院信息管理)
- 用WWW::Mechanize来写twiki
- python中可以清空字典并保留变量的是,给定字典d,以下选项中可以清空该字典并保留变量的...