1、冒泡排序

  1. //第一种
  2. function bubblesort(ary){
  3. for(var i=0;i<ary.length-1;i++){
  4. for(var j=0;j<ary.length-1-i;j++){
  5. if(ary[j] > ary[j+1]) {//如果前面的数据比后面的大就交换
  6. var items = ary[j];
  7. ary[j] = ary[j+1];
  8. ary[j+1] = items;
  9. }
  10. }
  11. }
  12. return ary;
  13. }
  14. var ary=[2,5,4,1,6,3];
  15. console.log(bubblesort(ary));
  16. //第二种
  17. var bubbleSort=function(arr){
  18. for(var i=0;i<arr.length-1;i++){
  19. for(var j=i+1;j<arr.length;j++){
  20. if(arr[i]>arr[j]){//如果前面的数据比后面的大就交换
  21. var temp=arr[i];
  22. arr[i]=arr[j];
  23. arr[j]=temp;
  24. }
  25. }
  26. }
  27. return arr;
  28. }
  29. var arr=[2,5,4,1,6,3];
  30. console.log(bubbleSort(arr));

2、快速排序

  1. // 数组快速排序的原理 : 获取数组的中间项,然后对数组进行循环,判断数组每一项和这个中间项进行比较,比中间项小的放在左边数组,比中间项大的放进右边的数组;然后通过递归对左边数组右边数组进行同样的处理,最后把每一个数组和中间项拼接在一起;
  2. function quickSort(ary) {
  3. // 当数组长度为一时,不需要再递归
  4. if(ary.length<=1){
  5. return ary;
  6. }
  7. // 计算中间项的索引,偶数项取中间两项后面一项,奇数项取中间项
  8. var index = Math.floor(ary.length/2);
  9. // splice : 返回值是一个数组,通姑索引获取中间项
  10. var middle = ary.splice(index,1)[0];
  11. var left = [];
  12. var right = [];
  13. for(var i=0;i<ary.length;i++){
  14. var cur = ary[i];
  15. if(cur<middle){
  16. left.push(cur);
  17. }else{
  18. right.push(cur);
  19. }
  20. }
  21. return quickSort(left).concat(middle,quickSort(right));
  22. }

3、插入排序

  1. function insertSort(ary){
  2. var newAry= [];
  3. newAry.push(ary[0]);
  4. for(var i=1;i<ary.length;i++){
  5. var cur = ary[i];
  6. for(var j=newAry.length-1;j>=0;){
  7. if(cur<newAry[j]){
  8. j--;
  9. if(j===-1){
  10. newAry.unshift(cur);
  11. }
  12. }else{
  13. newAry.splice(j+1,0,cur);
  14. break;
  15. }
  16. }
  17. };
  18. return newAry;
  19. }

js数组冒泡排序、快速排序、插入排序的更多相关文章

  1. JS实现冒泡排序,插入排序和快速排序(从input中获取内容)

    以前参加面试的时候,被问到过让用JS实现一个快速排序,当时太年轻,并没有回答上来. 于是,这里便把三种排序都用JS来做了一下.结合html,从input文本框中获取输入进行排序. 关于这几种算法的原理 ...

  2. js数组冒泡排序

    文章地址 https://www.cnblogs.com/sandraryan/ js数组的冒泡排序是最经典的一种排序方式(我以为). 冒泡排序是吧一组数组的元素两两比较,交换位置,通过多轮比较,实现 ...

  3. js数组冒泡排序,快速排序的原理以及实现

    冒泡排序: 随便从数组中拿一位数和后一位比较,如果是想从小到大排序,那么就把小的那一位放到前面,大的放在后面,简单来说就是交换它们的位置,如此反复的交换位置就可以得到排序的效果. var arr = ...

  4. JS数组冒泡排序&去重

    冒泡排序: var a = [2,1,4,3,6,5]; for(var d = 0 ; d< a.length; d++){ for(var b = d+1; b < a.length; ...

  5. JavaScript 数据结构与算法之美 - 冒泡排序、插入排序、选择排序

    1. 前言 算法为王. 想学好前端,先练好内功,只有内功深厚者,前端之路才会走得更远. 笔者写的 JavaScript 数据结构与算法之美 系列用的语言是 JavaScript ,旨在入门数据结构与算 ...

  6. 算法与数据结构(十三) 冒泡排序、插入排序、希尔排序、选择排序(Swift3.0版)

    本篇博客中的代码实现依然采用Swift3.0来实现.在前几篇博客连续的介绍了关于查找的相关内容, 大约包括线性数据结构的顺序查找.折半查找.插值查找.Fibonacci查找,还包括数结构的二叉排序树以 ...

  7. 冒泡排序与插入排序(C#实现)

    本人应届生面试,发现被问了2次关于排序的算法.当时竟然没写出来!!!好吧,可能是用库函数多了,很久没搞算法了,在纸上写没感觉吧. 今天花了1个多小时写了下冒泡排序与插入排序(C#实现),并写了注释和小 ...

  8. js数组相关知识集合

    一.js数组快速排序 <script type="text/javascript"> var arr = [1, 2, 3, 54, 22, 1, 2, 3]; fun ...

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

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

随机推荐

  1. [Algo] 281. Remove Spaces

    Given a string, remove all leading/trailing/duplicated empty spaces. Assumptions: The given string i ...

  2. SSID

    无线网络中SSID,是路由器发送的无线信号的名字!如果你将你的无线路由器的SSID:命名为:gouwancheng ,那么当你的无线路由器开启,并启用了无线功能,和允许了SSID广播,那么你就可以轻易 ...

  3. 使用idea创建spring mvc项目图文教程

    使用idea创建spring mvc项目图文教程 前言: 使用惯了eclipse的朋友,如果刚换成了idea或许有些不习惯.但是使用idea之后,就会love上idea了.本文将通过图文讲解怎么通过i ...

  4. 常用JS图片滚动(无缝、平滑、上下左右滚动)

    常用JS图片滚动(无缝.平滑.上下左右滚动)代码大全 <head><-----></head><body> <!--向下滚动代码开始-->& ...

  5. android多框架实现短视频应用、3D手势旋转、banner控件、指南针、智能管家等应用源码

    Android精选源码 android智能管家app源码 Android高仿拼多多分类列表 Android百度地图实例详解之仿摩拜单车APP RecyclerView的LayoutManager搭建流 ...

  6. ML modeling process

    一.数据读取Load Data 二.数据分析EDA 三.数据预处理 四.特征工程Feature engineering 五.modeling & Tuning 六.Result 七.other ...

  7. 线程、volatile与synchronized、Lock

    目录 线程 1.概念: 2.线程生命周期: 3.线程调度 4.线程实现 4.1.实现方式 4.2.之间的区别: 5.线程安全 5.1.volatile与synchronized 5.1.synchro ...

  8. Markdown 内嵌 HTML 语法

    Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式.Markdown内嵌HTML,本文总结了一些常用的HTML标记用于扩展Markdow ...

  9. mongoDB连接信息及生成对应的collection生成代码

    .net,个人封装MONGODDB的操作. using System; using System.Collections.Generic; using System.Linq; using Syste ...

  10. 一次面试留下的实际应用问题。关于HttpModule,IIS集成模式。

    资料来自<IIS7开发与管理完全手册> 周五面试时有点紧张,没能静下心思考,当时隐约想到这个解决方案,但因面试环境和心态确未能明确的表述. 回家的地铁上已经找到解决办法. 要点:1基于IH ...