刚好今晚看了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 冒泡排序与快速排序的更多相关文章

  1. js 冒泡排序、快速排序、去重、查找字符串最多值(面试常有)

    冒泡排序 var bubbleSort = function(arr) { for (var i = 0; i < arr.length-1; i++) { for (var j = i+1; ...

  2. js冒泡排序,快速排序,插入排序

     //冒泡排序 function sortBubble(array){   var len=array.length,i,j,tmp;   for(i=len-1;i>=1;i--){     ...

  3. [C#][算法] 用菜鸟的思维学习算法 -- 马桶排序、冒泡排序和快速排序

    用菜鸟的思维学习算法 -- 马桶排序.冒泡排序和快速排序 [博主]反骨仔 [来源]http://www.cnblogs.com/liqingwen/p/4994261.html  目录 马桶排序(令人 ...

  4. js 中的快速排序算法简单实现

    对于快速排序,最早是在c++中看到,它是利用指针来交换顺序,其实无论哪种语言,原理 和 思想都是一样,然而真正用起来的时候就特别容易忽略一些事实,导致实现失败.废话少说,下面用js实现一下快速排序: ...

  5. PHP描述冒泡排序和快速排序算法

    使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组.使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组.写一个二维数组排序算法函数,能够具有通用 ...

  6. JavaScript实现冒泡排序、快速排序、插入排序

    JavaScript实现冒泡排序.快速排序.插入排序 时间:2014-01-09 18:05:51  来源:  作者:胡晗 冒泡排序的基本思想:所谓冒泡就是泡泡一个一个往上冒,让体积最轻的泡泡浮在最上 ...

  7. python 实现冒泡排序与快速排序 遇到的错误与问题

    今天看了兄弟连php里面的冒泡排序与快速排序,想了下应该可以用python实现. 冒泡排序函数: def mysort(x): len1 = len(x) for i in range(len1-1, ...

  8. 八大排序方法汇总(选择排序,插入排序-简单插入排序、shell排序,交换排序-冒泡排序、快速排序、堆排序,归并排序,计数排序)

    2013-08-22 14:55:33 八大排序方法汇总(选择排序-简单选择排序.堆排序,插入排序-简单插入排序.shell排序,交换排序-冒泡排序.快速排序,归并排序,计数排序). 插入排序还可以和 ...

  9. 【PHP面试题】通俗易懂的两个面试必问的排序算法讲解:冒泡排序和快速排序

    又到了金三银四找工作的时间,相信很多开发者都在找工作或者准备着找工作了.一般应对面试,我们无可厚非的去刷下面试题.对于PHPer来说,除了要熟悉自己所做的项目,还有懂的基本的算法.下面来分享下PHP面 ...

随机推荐

  1. PAT 1140 Look-and-say Sequence

    1140 Look-and-say Sequence (20 分)   Look-and-say sequence is a sequence of integers as the following ...

  2. linux 一键安装lnmp环境

    ①,登陆后运行:screen -S lnmp ②.如果提示screen: command not found 命令不存在可以执行:     yum install wget  ③. 执行命令:wget ...

  3. 强化学习(六):n-step Bootstrapping

    n-step Bootstrapping n-step 方法将Monte Carlo 与 one-step TD统一起来. n-step 方法作为 eligibility traces 的引入,eli ...

  4. 启用hyper-v后无法卸载vmware

    机器上启用了hyper-v,想卸载vmware,报错了: Error: This product may not be installed on a computer that has Microso ...

  5. Windows上验证过的一些乱七八糟的笔记

    1.Win10安装时报错“windows 无法安装到这个磁盘 gpt分区形式”? 答:shift+f10:  https://jingyan.baidu.com/article/08b6a591c82 ...

  6. python数据结构与算法之单链表

    表的抽象数据类型 ADT list:                      #一个表的抽象数据类型 List(self)               #表的构造操作,创建一个空表 is_empty ...

  7. sql server中如何修改视图中的数据?

    sql server中如何修改视图中的数据? 我做个测试,视图的数据有标记字段时,如果是这种方式(0 as FlagState),是无法修改的 --创建视图语句 --- create view V_E ...

  8. Firebug: 已拦截跨源请求:同源策略禁止读取位于XXX的远程资源。(原因:CORS 头缺少 'Access-Control-Allow-

    第一种,就是在被请求的程序中添加HTTP头,即CORS跨域(跨域资源共享,Cross-Origin Resource Sharing) 如: Response.Headers.Add("Ac ...

  9. 2ci

  10. python day18 作业 Django 开发主机管理系统

    http://www.cnblogs.com/liang2580/p/9248803.html