1.  冒泡排序 

定义: 比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个 数据交换。 
这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1个位置。 
N=N-1,如果N不为0就重复前面二步,否则排序完成。

  function bubbleSort(arr){for(var i=0;i<arr.length-1;i++){ for(var j=0;j<arr.length-i-1;j++){ if(arr[j]>arr[j+1]){ var temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } } return arr; } console.log(bubbleSort([6,1,2,4,3,5]))
2. 选择排序

比如在一个长度为N的无序数组中,在第一趟遍历N个数据,找出其中最小的数值与第一个元素交换,第二趟遍历剩下的N-1个数据,找出其中最小的数值与第二个元素交换……第N-1趟遍历剩下的2个数据,找出其中最小的数值与第N-1个元素交换,至此选择排序完成。

     function selectSort(arr){var min,temp;for(var i=0;i<arr.length-1;i++){ min=i; for(var j=i+1;j<arr.length;j++){ if(arr[j]<arr[min]){ min = j; } } temp=arr[i]; arr[i]=arr[min]; arr[min]=temp; } return arr; } console.log(selectSort([6,1,2,4,3,5])) 
 3. 快速排序

定义: 
1.先从数列中取出一个数作为基准数。

2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。

3.再对左右区间重复第二步,直到各区间只有一个数。

 function quickSort(arr){if(arr.length<2){return arr} var left=[],right=[],mid=arr.splice(Math.floor(arr.length/2),1); for(var i=0;i<arr.length;i++){ if(arr[i]<mid){ left.push(arr[i]); }else { right.push(arr[i]) } } return quickSort(left).concat(mid,quickSort(right)) } console.log(quickSort([6,1,2,4,3,5]))
 4. 插入排序

从第一个元素开始,该元素可以认为已经被排序; 
取出下一个元素,在已经排序的元素序列中从后向前扫描; 
如果该元素(已排序)大于新元素,将该元素移到下一位置; 
重复步骤3,直到找到已排序的元素小于或者等于新元素的位置; 
将新元素插入到该位置后; 
重复步骤2~5。

 function insertSort(arr){var len = arr.length; for (var i = 1; i < len; i++) { var key = arr[i]; var j = i - 1; while (j >= 0 && arr[j] > key) { arr[j + 1] = arr[j]; j--; } arr[j + 1] = key; } return arr; }

转载于:https://www.cnblogs.com/wws-bk/p/9660555.html

js几种常见排序的实现相关推荐

  1. js几种常见的递归方法

    js几种常见的递归方法 递归的概念:就是函数调用函数本身,或者在自己函数调用的下级调用函数自己: 案例1:求和,1-100 function sun(n){if(n==1) return 1} 案例2 ...

  2. Java几种常见排序算法与代码实现

    前言: 排序算法也算是每年校招.春招.社招都会问到的问题,虽然每次复习了就忘,但是也可以隔一段时间又拿出来看看. 其中,排序方式指,内部还是外部排序.只需要内部内存就可以的称为内部排序,数据量太大需要 ...

  3. JS几种常见的用户名检测

    本博客主要讲述关于JS的几种常见的用户名检测.包括 一.不能以数字开头–isNaN() // isNaN 是一个系统的函数,用于判断一个变量是否为 NaN //strings指的是要判断对象 //st ...

  4. JS三种简单排序算法

    冒泡排序:最简单.最慢.长度小于7的时候最优  插入排序:比冒泡要快比快速排序和希尔排序慢,数据量小的时候优势大  快速排序:速度很快  //js利用systemSort进行排序 systemSort ...

  5. JavaScript版几种常见排序算法

    说明 写这个主要是为了锻炼自己,并无实际意义. 每个浏览器测试得出的数据会不一样.比如我用chrome 测试 一般快速排序都会最快,IE 则根据数组长度有可能希尔最快. 不要用太大数据去测试冒泡排序( ...

  6. 四种常见排序算法的对比和总结 插入排序、归并排序、快速排序、堆排序

    目录 一.排序算法的时间复杂度 二.排序算法是否是原地排序 三.排序算法的额外空间 四.排序算法的稳定性 Stable 五.总结 这里我们要总结的排序算法主要有4个,分别是插入排序Insertion ...

  7. 前端:JS几种常见的排序

    1.冒泡排序 依次比较相邻的两个元素,如果后一个小于前一个,则交换,这样从头到尾一次,就将最大的放到了末尾. 动画演示: 代码: function bubbleSort(arr) {var len = ...

  8. Java实现几种常见排序方法

    为什么80%的码农都做不了架构师?>>>    日常操作中常见的排序方法有:冒泡排序.快速排序.选择排序.插入排序.希尔排序,甚至还有基数排序.鸡尾酒排序.桶排序.鸽巢排序.归并排序 ...

  9. java 鸡尾酒排序_Java实现几种常见排序方法

    日常操作中常见的排序方法有:冒泡排序.快速排序.选择排序.插入排序.希尔排序,甚至还有基数排序.鸡尾酒排序.桶排序.鸽巢排序.归并排序等. 冒泡排序是一种简单的排序算法.它重复地走访过要排序的数列,一 ...

最新文章

  1. jdbcTemplate 的update 和batchUpdate 方法的使用
  2. 共模电感适用的频率_电感选型详解及设计规范
  3. 位图像素的颜色 携程编程大赛hdu
  4. leetcode 85. 最大矩形(dp)
  5. Django之ORM
  6. eclipse使用maven tomcat插件部署无法关联源代码
  7. gitlab搭建与使用
  8. 查看局域网内所有ip 和 mac
  9. 平凡的故事:年轻开发者的那些伤心事
  10. 学习笔记(5):2020华为HCIA/HCNA/数通/路由交换/实验/视频/教程/持续更新赠题库-HCIA数通IP地址编址及报头详解
  11. 读《未来世界的幸存者》
  12. 2017年江苏高考数学14题
  13. JAVA一些方法技巧
  14. 丧心病狂!华为折叠屏手机一秒售罄,炒到9万一部!
  15. 如何将单线程爬虫改成多线程
  16. 关于恶意说说自动在QQ空间转发的机制
  17. iApp4Me一周年记
  18. 【repo使用指南】
  19. 淘宝店铺商品发布API(新)接口,店铺上传接口代码对接教程
  20. 用条码标签打印软件批量打印照片

热门文章

  1. C小项目 —— 学生信息管理系统
  2. Datawhale组队-pandas(上)基础(自学)
  3. 鼠标中间无法打开新标签_还记得鼠标有几个键?Win10环境鼠标中键的妙用
  4. 根据大小分割大文本_基于深度学习的图像分割在高德地图的实践
  5. NIO之ByteBuffer_NIO之网络IO_与ChannelNetty初窥门径
  6. python的普通方法、类方法和静态方法
  7. TensorFlow 2.x GPU版在conda虚拟环境下安装步骤
  8. LeetCode 831. 隐藏个人信息
  9. 剑指Offer - 面试题54. 二叉搜索树的第k大节点(二叉树循环遍历)
  10. LeetCode 628. 三个数的最大乘积