JS排序方法(sort,bubble,select,insert)代码汇总


Posted in Javascript onJanuary 30, 2016

最近开始学习数据结构。

一点一点整理,希望能坚持下来。

因为方向是前端,所以用JavaScript实现。

//sort排序
var testArr1=[3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48];
var testArr2=[3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48];
var testArr3=[3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48];
testArr1.sort();//排序结果:[15, 19, 2, 26, 27, 3, 36, 38, 4, 44, 46, 47, 48, 5, 50]
testArr2.sort(function(a,b){return a>b});//排序结果:[2, 3, 4, 5, 15, 19, 26, 27, 36, 38, 44, 46, 47, 48, 50]
testArr3.sort(function(a,b){return a-b});//排序结果:[2, 3, 4, 5, 15, 19, 26, 27, 36, 38, 44, 46, 47, 48, 50]

//Bubble排序

var testArr1=[3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48];
var testArr2=[3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48];
function bubbleSort1(array){
  for(i=array.length-1;i>0;i--){
    for(j=0;j<i;j++){
      if(array[j+1]<array[j]){
        var temp=array[j+1];
        array[j+1]=array[j];
        array[j]=temp;
      }
    }
  }
}
function bubbleSort2(array){
  for(i=array.length-1;i>0;i--){
    for(j=0;j<i;j++){
      if((array[j+1]-array[j])<0){
        var temp=array[j+1];
        array[j+1]=array[j];
        array[j]=temp;
      }
    }
  }
}
bubbleSort1(testArr1);//排序结果:[2,3,4,5,15,19,26,27,36,38,44,46,47,48,50]
bubbleSort2(testArr2);//排序结果:[2,3,4,5,15,19,26,27,36,38,44,46,47,48,50]

//Select排序

var testArr=[3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48];
function selectSort(array){
  for(i=0;i<array.length;i++){
     var slc=array[i];//初始时设未排序的第一个值为选中值
     var slcIdx;//记录一次循环后作为选中值的index
     for(j=i;j<array.length;j++){  
      if(array[j]<slc){
       slc=array[j];
       slcIdx=j; 
      }
     }
   if(slc!=test[i]){//如果最后作为选中值的值和初始slc值不相等
    var temp=array[i];
    array[i]=array[slcIdx];
    array[slcIdx]=temp;
   }
  }
}
selectSort(testArr);//排序结果是:[2,3,4,5,15,19,26,27,36,38,44,46,47,48,50]

//Insert排序

var testArr=[3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48];
function insertSort(array){
  for (var i = 0 ; i < array.length-1; i++) {//注意i小于数组的长度-1,否则会造成数组越界,形成死循环
    var curElement=array[i+1];
    for (var j = i; j >= 0; j--) {
      if(curElement<array[j]){
        array[j+1]=array[j];
        if(j==0){//当j==0时,说明已经排到了数组的最开头
          array[0]=curElement;
        }
      }else{
        array[j+1]=curElement;
         break;
      }
    };
  };
}
 insertSort(testArr);//排序结果是:[2,3,4,5,15,19,26,27,36,38,44,46,47,48,50]
Javascript 相关文章推荐
JQuery下关于$.Ready()的分析
Dec 13 Javascript
js和jquery中循环的退出和继续下一个循环
Sep 03 Javascript
jquery-mobile基础属性与用法详解
Nov 23 Javascript
js实现3D图片展示效果
Mar 09 Javascript
Vue.js 动态为img的src赋值方法
Mar 14 Javascript
Angularjs中的$apply及优化使用详解
Jul 02 Javascript
Vue axios全局拦截 get请求、post请求、配置请求的实例代码
Nov 28 Javascript
微信小程序实现九宫格抽奖
Apr 15 Javascript
微信小程序如何使用globalData的方法
Jun 06 Javascript
layer弹出层扩展主题的方法
Sep 11 Javascript
基于VSCode调试网页JavaScript代码过程详解
Jul 20 Javascript
JavaScript基于SVG的图片切换效果实例代码
Dec 15 Javascript
JavaScript中的this机制
Jan 30 #Javascript
实现高性能JavaScript之执行与加载
Jan 30 #Javascript
深入探秘jquery瀑布流的实现
Jan 30 #Javascript
深入分析Javascript事件代理
Jan 30 #Javascript
详解javascript实现瀑布流列式布局
Jan 29 #Javascript
详解javascript实现瀑布流绝对式布局
Jan 29 #Javascript
理解Javascript文件动态加载
Jan 29 #Javascript
You might like
php class中public,private,protected的区别以及实例分析
2013/06/18 PHP
PHP SPL标准库之数据结构堆(SplHeap)简单使用实例
2015/05/12 PHP
PHP使用ajax的post方式下载excel文件简单示例
2019/08/06 PHP
php自动加载代码实例详解
2021/02/26 PHP
jquery.validate的使用说明介绍
2013/11/12 Javascript
jQuery链式操作实例分析
2015/11/16 Javascript
JavaScript数据类型学习笔记
2016/01/25 Javascript
Jquery和Js获得元素标签名称的方法总结
2016/10/08 Javascript
微信开发 js实现tabs选项卡效果
2016/10/28 Javascript
JS实现Ajax的方法分析
2016/12/20 Javascript
深入理解Commonjs规范及Node模块实现
2017/05/17 Javascript
十个免费的web前端开发工具详细整理
2017/09/18 Javascript
node文件批量重命名的方法示例
2017/10/23 Javascript
微信小程序实现图片上传功能实例(前端+PHP后端)
2018/01/10 Javascript
JavaScript实现背景自动切换小案例
2019/09/27 Javascript
node使用mysql获取数据库数据中文乱码问题的解决
2019/12/02 Javascript
vue实现移动端input上传视频、音频
2020/08/18 Javascript
python实现获取Ip归属地等信息
2016/08/27 Python
Django中的静态文件管理过程解析
2019/08/01 Python
nginx+uwsgi+django环境搭建的方法步骤
2019/11/25 Python
利用python实现冒泡排序算法实例代码
2019/12/01 Python
python多进程并发demo实例解析
2019/12/13 Python
python关于调用函数外的变量实例
2019/12/26 Python
解决jupyter notebook打不开无反应 浏览器未启动的问题
2020/04/10 Python
Python + opencv对拍照得到的图片进行背景去除的实现方法
2020/11/18 Python
实例讲解使用SVG制作loading加载动画的方法
2016/04/05 HTML / CSS
介绍Java的内部类
2012/10/27 面试题
代码中finally中的代码会不会执行
2012/02/06 面试题
清华大学自主招生自荐信
2014/01/29 职场文书
学习十八大报告感言
2014/02/04 职场文书
市场营销大学生职业规划书
2014/02/25 职场文书
英语导游词
2015/02/13 职场文书
践行三严三实心得体会(2016推荐篇)
2016/01/06 职场文书
创业分两种人:那么哪些适合创业?,哪些适合不适合创业呢?
2019/08/23 职场文书
假如给我三天光明:舟逆水而行,人遇挫而达 
2019/10/29 职场文书
MySQL数据库之存储过程 procedure
2022/06/16 MySQL