js 冒泡排序与快速排序
刚好今晚看了js的冒泡排序跟快速排序,趁着还没忘记先记下来。
1. 冒泡排序:遍历数组,每个元素都与后一个元素比较,如果大于下一个元素,则两个元素位置调换。否则的话当前元素再与下下个元素比较,一直到 跟后面的元素都比较完。这个是升序的排序,降序则相反。
var arr = [1,23,4,12,32,455,122,3,43,13];
function bubbleSort(arr) {
for (let i = 0; i < arr.length - 1; i++) {
for(let j = i + 1; j < arr.length; j++) {
if (arr[i] > arr[j]) {
let maxVal = arr[i];
arr[i] = arr[j];
arr[j] = maxVal;
}
}
}
return arr;
}
console.log('bubble sort: ', bubbleSort(arr));
2. 快速排序:是对冒泡排序的一种改进。
- 先从数组里面选出一个数,一般都是第一个数即array[0],然后再将其他数据分成两个数组,小于array[0]的放在左边数组,大于的放在右边数组。
- 对两个数组进行递归排序(按照1步骤),直到数组长度 <= 1,跳出递归(这个是主要条件,不然会陷入死循环)。
- 将数据 concat 成一个最终的数组。这个是升序的排序,降序则相反。
var arr = [1,23,4,12,32,455,122,3,43,13];
function quickSort(arr) {
if (arr.length <= 1) {
// 注意加这个条件,不然死循环
return arr;
}
var reference = arr[0];
var leftList = [];
var rightList = [];
arr.forEach(item => {
if (item > reference) {
rightList.push(item);
} else if (item < reference) {
leftList.push(item);
}
}) return quickSort(leftList).concat(reference, quickSort(rightList));
}
console.log('quick sort: ' , quickSort(arr))
js 冒泡排序与快速排序的更多相关文章
- js 冒泡排序、快速排序、去重、查找字符串最多值(面试常有)
冒泡排序 var bubbleSort = function(arr) { for (var i = 0; i < arr.length-1; i++) { for (var j = i+1; ...
- js冒泡排序,快速排序,插入排序
//冒泡排序 function sortBubble(array){ var len=array.length,i,j,tmp; for(i=len-1;i>=1;i--){ ...
- [C#][算法] 用菜鸟的思维学习算法 -- 马桶排序、冒泡排序和快速排序
用菜鸟的思维学习算法 -- 马桶排序.冒泡排序和快速排序 [博主]反骨仔 [来源]http://www.cnblogs.com/liqingwen/p/4994261.html 目录 马桶排序(令人 ...
- js 中的快速排序算法简单实现
对于快速排序,最早是在c++中看到,它是利用指针来交换顺序,其实无论哪种语言,原理 和 思想都是一样,然而真正用起来的时候就特别容易忽略一些事实,导致实现失败.废话少说,下面用js实现一下快速排序: ...
- PHP描述冒泡排序和快速排序算法
使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组.使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组.写一个二维数组排序算法函数,能够具有通用 ...
- JavaScript实现冒泡排序、快速排序、插入排序
JavaScript实现冒泡排序.快速排序.插入排序 时间:2014-01-09 18:05:51 来源: 作者:胡晗 冒泡排序的基本思想:所谓冒泡就是泡泡一个一个往上冒,让体积最轻的泡泡浮在最上 ...
- python 实现冒泡排序与快速排序 遇到的错误与问题
今天看了兄弟连php里面的冒泡排序与快速排序,想了下应该可以用python实现. 冒泡排序函数: def mysort(x): len1 = len(x) for i in range(len1-1, ...
- 八大排序方法汇总(选择排序,插入排序-简单插入排序、shell排序,交换排序-冒泡排序、快速排序、堆排序,归并排序,计数排序)
2013-08-22 14:55:33 八大排序方法汇总(选择排序-简单选择排序.堆排序,插入排序-简单插入排序.shell排序,交换排序-冒泡排序.快速排序,归并排序,计数排序). 插入排序还可以和 ...
- 【PHP面试题】通俗易懂的两个面试必问的排序算法讲解:冒泡排序和快速排序
又到了金三银四找工作的时间,相信很多开发者都在找工作或者准备着找工作了.一般应对面试,我们无可厚非的去刷下面试题.对于PHPer来说,除了要熟悉自己所做的项目,还有懂的基本的算法.下面来分享下PHP面 ...
随机推荐
- Java开源框架知识整理
1.Spring的了解 Spring是一个轻量级的IOC/DI和AOP容器的开源框架.可以实现Java模块化开发,贯穿表现层,业务层,逻辑层,实现各层之间的解耦合关系. IOC,控制反 ...
- java知识随笔
Servlet: void init(ServletConfig var1) throws ServletException; ServletConfig getServletConfig(); vo ...
- (03) spring Boot 的配置
1. spring boot 的核心配置 spring boot 项目建立之后,已经创建好了application.properties 配置文件 其实, 配置文件还支持*.yml 格式的: 2. 多 ...
- 【还是回来了】博客搬家--https://cangbean.github.io
还是弄了个自己的地址:https://cangbean.github.io 想记录下,防止万一以后迁移不好弄 想练习markdown写作 折腾而已 以后不再博客园记录东西了,但是还是会回来看看的
- springboot国际化
Session方式的国际化/** * @descripte 请求中如果有{@Param lang},则按照lang的格式国际化 * @descripte 请求中如果无{@Param lang},但se ...
- git(三) 使用github
1.创建仓库 ① 注册github账户,登录后,点击"New respository ". ② 在新页面中,输入项目的名称,勾选'readme.md',点击'create repo ...
- mysql数据库的基本操作命令总结
本文章将讲述Mysql数据的的基本操作.前期的安装请自行百度 运行环境:linux Ubuntu 16.04 命令行连接 在工作中主要使用命令操作方式,要求熟练编写 打开终端,运行命令 mysql - ...
- 小白的python之路11/3内存 进程 二进制软件包 rpm yum
一 分区 查看swap分区 swapon -s mkswap /dev/sdb8 激活 swapon -a /dev/sdb8 swapon -s (sdb8进入了文件中) 提供内存服务 free ( ...
- 小白的python之路Linux部分10/28&29
属主属组其他人对文件的rwx权限 1.userdel删东西不全,会有残留,
- 洛谷1196【NOI2002】题解
题目描述 公元五八○一年,地球居民迁至金牛座α第二行星,在那里发表银河联邦创立宣言,同年改元为宇宙历元年,并开始向银河系深处拓展. 宇宙历七九九年,银河系的两大军事集团在巴米利恩星域爆发战争.泰山压顶 ...