刚好今晚看了js的冒泡排序跟快速排序,趁着还没忘记先记下来。

1. 冒泡排序:遍历数组,每个元素都与后一个元素比较,如果大于下一个元素,则两个元素位置调换。否则的话当前元素再与下下个元素比较,一直到 跟后面的元素都比较完。这个是升序的排序,降序则相反。

  1. var arr = [1,23,4,12,32,455,122,3,43,13];
  2.  
  3. function bubbleSort(arr) {
  4. for (let i = 0; i < arr.length - 1; i++) {
  5. for(let j = i + 1; j < arr.length; j++) {
  6. if (arr[i] > arr[j]) {
  7. let maxVal = arr[i];
  8. arr[i] = arr[j];
  9. arr[j] = maxVal;
  10. }
  11. }
  12. }
  13. return arr;
  14. }
  15. console.log('bubble sort: ', bubbleSort(arr));

2. 快速排序:是对冒泡排序的一种改进。

  • 先从数组里面选出一个数,一般都是第一个数即array[0],然后再将其他数据分成两个数组,小于array[0]的放在左边数组,大于的放在右边数组。
  • 对两个数组进行递归排序(按照1步骤),直到数组长度 <= 1,跳出递归(这个是主要条件,不然会陷入死循环)。
  • 将数据 concat 成一个最终的数组。这个是升序的排序,降序则相反。
  1. var arr = [1,23,4,12,32,455,122,3,43,13];
  2. function quickSort(arr) {
  3. if (arr.length <= 1) {
  4. // 注意加这个条件,不然死循环
  5. return arr;
  6. }
  7. var reference = arr[0];
  8. var leftList = [];
  9. var rightList = [];
  10. arr.forEach(item => {
  11. if (item > reference) {
  12. rightList.push(item);
  13. } else if (item < reference) {
  14. leftList.push(item);
  15. }
  16. })
  17.  
  18. return quickSort(leftList).concat(reference, quickSort(rightList));
  19. }
  20. 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. android异步任务处理(网络等耗时操作)

    在实际应用中经常会遇到比较耗时任务的处理,比如网络连接,数据库操作等情况时,如果这些操作都是放在主线程(UI线程)中,则会造成UI的假死现象(android4.0后也不许放在UI线程),这可以使用As ...

  2. scikit_learn lasso详解

    Lasso 回归 l1 正则化 The Lasso 是估计稀疏系数的线性模型. 它在一些情况下是有用的,因为它倾向于使用具有较少参数值的情况,有效地减少给定解决方案所依赖变量的数量. 因此,Lasso ...

  3. JavaScript进阶系列1:performace和console.time性能测试

    测试性能的时候,三种方法: 1.使用new Date() 返回整数值ms var dtStart=new Date(); for(var i=0;i<15000;i++){ i=i; } var ...

  4. linux逻辑卷管理(LVM)

    1. 逻辑卷(LVM)的原理 LVM(Logical Volume Manager)逻辑卷管理 是在物理磁盘和文件系统的之间添加一个逻辑层,通过对底层物理磁盘的封装,以逻辑卷的方式呈现给上层应用,通过 ...

  5. 简易OA漫谈之工作流设计(一个Demo),完成6年前的一个贴子

    6年前在腾讯做OA,那时写了两篇心得. https://www.cnblogs.com/wangxiaohuo/archive/2012/08/22/2650893.html https://www. ...

  6. kafka 消费模型图

  7. 彻底搞懂js原型与原型链

    原生的原型链 function fn(){},fn 为 Function的一个实例,原型链为 null -> Object -> Function -> fn: fn.__proto ...

  8. springboot webmvc初始化:一个登陆异常引出的话题

    1.场景复现: 一个登陆异常引出的问题. 我们通过精心组织组件扫描的方式,来装配不同的子模块,形成一个可运行的应用: 在载入某个子模块后,我们发现应用虽然正常启动,但尝试登陆的时候,出现一个很异常的异 ...

  9. jjava:将jar包引入环境变量的一个骚操作以及因此搞出来的扑街问题

    现在我有一个java文件,我只想javac启动,但是这货import了一堆jar里面的东西. 于是我下回了所有的jar包,将这些jar包丢到jdk1.8.0_162\jre\lib\ext里面就ok了 ...

  10. python基础--字典

    Python基础--字典 字典的常用函数: dict.clear( )--->无任何返回值 说明: 清除字典内的所有的元素 语法: In [5]: dict.clear? Type: metho ...