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 相关文章推荐
Javascript SHA-1:Secure Hash Algorithm
Dec 20 Javascript
jQuery Tab插件 用于在Tab中显示iframe,附源码和详细说明
Jun 27 Javascript
jquery实现盒子下拉效果示例代码
Sep 12 Javascript
AngularJS控制器继承自另一控制器
May 09 Javascript
输入法的回车与消息发送快捷键回车的冲突解决方法
Aug 09 Javascript
JS+canvas动态绘制饼图的方法示例
Sep 12 Javascript
javaScript字符串工具类StringUtils详解
Dec 08 Javascript
解决layui中的form表单与button的点击事件冲突问题
Aug 15 Javascript
js实现弹出框的拖拽效果实例代码详解
Apr 16 Javascript
vue如何获取自定义元素属性参数值的方法
May 14 Javascript
Vue Extends 扩展选项用法完整实例
Sep 17 Javascript
antd form表单数据回显操作
Nov 02 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
工厂模式在Zend Framework中应用介绍
2012/07/10 PHP
php使用cookie显示用户上次访问网站日期的方法
2015/01/26 PHP
PHP指定截取字符串中的中英文或数字字符的实例分享
2016/03/18 PHP
php实现产品加入购物车功能(1)
2020/07/23 PHP
php读取出一个文件夹及其子文件夹下所有文件的方法示例
2017/06/15 PHP
利用php操作memcache缓存的基础方法示例
2017/08/02 PHP
javascript一些不错的函数脚本代码
2008/09/10 Javascript
javascript 24小时弹出一次的代码(利用cookies)
2009/09/03 Javascript
jquery tools 系列 scrollable(2)
2009/09/06 Javascript
jQuery.Autocomplete实现自动完成功能(详解)
2010/07/13 Javascript
40款非常棒的jQuery 插件和制作教程(系列二)
2011/11/02 Javascript
web开发人员学习jQuery的6大理由及jQuery的优势介绍
2013/01/03 Javascript
NodeJS创建基础应用并应用模板引擎
2016/04/12 NodeJs
关于Jquery中的事件绑定总结
2016/10/26 Javascript
ES6新特性七:数组的扩充详解
2017/04/21 Javascript
JS中Safari浏览器中的Date
2017/07/17 Javascript
Vue2.0 实现单选互斥的方法
2018/04/13 Javascript
JS通过位运算实现权限加解密
2018/08/14 Javascript
Vue.set() this.$set()引发的视图更新思考及注意事项
2018/08/30 Javascript
Vue的编码技巧与规范使用详解
2019/08/28 Javascript
vue实现移动端省市区选择
2019/09/27 Javascript
javascrpt密码强度校验函数详解
2020/03/18 Javascript
解决vue安装less报错Failed to compile with 1 errors的问题
2020/10/22 Javascript
Python获取电脑硬件信息及状态的实现方法
2014/08/29 Python
对python sklearn one-hot编码详解
2018/07/10 Python
python2和python3应该学哪个(python3.6与python3.7的选择)
2019/10/01 Python
高级运动鞋:GREATS
2019/07/19 全球购物
法国一家多品牌成衣精品中/高档商店:Graduate Store
2019/08/28 全球购物
工商管理实习生自我鉴定范文
2013/12/18 职场文书
年终总结会主持词
2014/03/25 职场文书
学校运动会霸气口号
2014/06/07 职场文书
企业授权委托书范本
2014/09/22 职场文书
三年级学生评语大全
2014/12/26 职场文书
关于做家务的心得体会
2016/01/23 职场文书
Python干货实战之八音符酱小游戏全过程详解
2021/10/24 Python
uniapp 微信小程序 自定义tabBar 导航
2022/04/22 Javascript