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 相关文章推荐
让插入到 innerHTML 中的 script 跑起来的实现代码
Jul 01 Javascript
JavaScript 捕获窗口关闭事件
Jul 26 Javascript
JavaScript中的onerror事件概述及使用
Apr 01 Javascript
jQuery ajax dataType值为text json探索分享
Sep 23 Javascript
页面元素绑定jquery toggle后元素隐藏的解决方法
Mar 27 Javascript
使用JavaScript 编写简单计算器
Nov 24 Javascript
jQuery实现的鼠标滑过弹出放大图片特效
Jan 08 Javascript
jQuery实现页面点击后退弹出提示框的方法
Aug 24 Javascript
ES6新特性五:Set与Map的数据结构实例分析
Apr 21 Javascript
详解JS数组Reduce()方法详解及高级技巧
Aug 18 Javascript
微信小程序ajax实现请求服务器数据及模版遍历数据功能示例
Dec 15 Javascript
Vue中qs插件的使用详解
Feb 07 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
全国FM电台频率大全 - 4 山西省
2020/03/11 无线电
上海地方志办公室-上海电子仪表工业志
2021/03/04 无线电
PHP生成HTML静态页面实例代码
2008/08/31 PHP
php对文件进行hash运算的方法
2015/04/03 PHP
php高清晰度无损图片压缩功能的实现代码
2018/12/09 PHP
PHP strripos函数用法总结
2019/02/11 PHP
可以文本显示的公告栏的js代码
2007/03/11 Javascript
jquery实现图片滚动效果的简单实例
2013/11/23 Javascript
调用innerHTML之后onclick失效问题的解决方法
2014/01/28 Javascript
jQuery带进度条全屏图片轮播特效代码分享
2020/06/28 Javascript
JavaScript html5 canvas绘制时钟效果
2016/03/01 Javascript
浅谈JQuery+ajax+jsonp 跨域访问
2016/06/25 Javascript
Ubuntu系统下Angularjs开发环境安装
2016/09/01 Javascript
Bootstrap作品展示站点实战项目2
2016/10/14 Javascript
angular1.x ui-route传参的三种写法小结
2018/08/31 Javascript
微信小程序实现左右列表联动
2020/05/19 Javascript
layui实现下拉复选功能的例子(包括数据的回显与上传)
2019/09/24 Javascript
小程序接口的promise化的实现方法
2019/12/11 Javascript
小程序中使用css var变量(使js可以动态设置css样式属性)
2020/03/31 Javascript
python对json的相关操作实例详解
2017/01/04 Python
Python编程使用*解包和itertools.product()求笛卡尔积的方法
2017/12/18 Python
python numpy 显示图像阵列的实例
2018/07/02 Python
浅谈解除装饰器作用(python3新增)
2018/10/15 Python
python分数表示方式和写法
2019/06/26 Python
python_mask_array的用法
2020/02/18 Python
Wallis官网:英国女装零售商
2020/01/21 全球购物
linux面试相关问题
2012/08/11 面试题
Java程序员面试90题
2013/10/19 面试题
工程监理应届生求职信
2013/11/09 职场文书
给全校老师的建议书
2014/03/13 职场文书
小学一年级评语大全
2014/04/22 职场文书
师范生免费教育协议书范本
2014/10/09 职场文书
部队2014年终工作总结
2014/11/27 职场文书
2015年基层党组织公开承诺书
2015/01/21 职场文书
班主任培训研修日志
2015/11/13 职场文书
python 遍历磁盘目录的三种方法
2021/04/02 Python