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 相关文章推荐
JQery 渐变图片导航效果代码 漂亮
Jan 01 Javascript
jquery实现的可隐藏重现的靠边悬浮层实例代码
May 27 Javascript
js简单网速测试方法完整实例
Dec 15 Javascript
JavaScript使ifram跨域相互访问及与PHP通信的实例
Mar 03 Javascript
JavaScript数组方法总结分析
May 06 Javascript
浅谈javascript运算符——条件,逗号,赋值,()和void运算符
Jul 15 Javascript
AngularJS入门教程之迭代器过滤详解
Aug 18 Javascript
bootstrap paginator分页前后台用法示例
Jun 17 Javascript
说说Vuex的getters属性的具体用法
Apr 15 Javascript
解决layui表格内文本超出隐藏的问题
Sep 12 Javascript
js实现滑动进度条效果
Aug 21 Javascript
javascript实现打砖块小游戏(附完整源码)
Sep 18 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
为IP查询添加GOOGLE地图功能的代码
2010/08/08 PHP
解决php写入数据库乱码的问题
2019/09/17 PHP
基于jQuery的计算文本框字数的代码
2012/06/06 Javascript
Extjs中通过Tree加载右侧TabPanel具体实现
2013/05/05 Javascript
Javascript合并表格中具有相同内容单元格示例
2013/08/11 Javascript
如何在JavaScript中实现私有属性的写类方式(一)
2013/12/04 Javascript
javascript实现十六进制颜色值(HEX)和RGB格式相互转换
2014/06/20 Javascript
jQuery实现html元素拖拽
2015/07/21 Javascript
angular+ionic 的app上拉加载更新数据实现方法
2017/01/16 Javascript
d3.js中冷门却实用的内置函数总结
2017/02/04 Javascript
vue.js实现单选框、复选框和下拉框示例
2017/07/18 Javascript
js 实现复选框只能选择一项的示例代码
2018/01/23 Javascript
vue 动态绑定背景图片的方法
2018/08/10 Javascript
vue实现重置表单信息为空的方法
2018/09/29 Javascript
详解create-react-app 2.0版本如何启用装饰器语法
2018/10/23 Javascript
JavaScript面向对象程序设计中对象的定义和继承详解
2019/07/29 Javascript
解决layui追加或者动态修改的表单元素“没效果”的问题
2019/09/18 Javascript
如何在JS文件中获取Vue组件
2020/09/16 Javascript
python抓取京东商城手机列表url实例代码
2013/12/18 Python
python回调函数中使用多线程的方法
2017/12/25 Python
python 环境搭建 及python-3.4.4的下载和安装过程
2019/07/20 Python
关于PyTorch 自动求导机制详解
2019/08/18 Python
python [:3] 实现提取数组中的数
2019/11/27 Python
解决pyqt5异常退出无提示信息的问题
2020/04/08 Python
Python xpath表达式如何实现数据处理
2020/06/13 Python
如何利用CSS3制作3D效果文字具体实现样式
2013/05/02 HTML / CSS
蒂娜商店:Tiina the Store
2019/12/07 全球购物
毕业生求职简历的自我评价
2013/10/23 职场文书
珍珠奶茶店创业计划书
2014/01/11 职场文书
2015年党员创先争优公开承诺书
2015/04/27 职场文书
考研经验交流会策划书
2015/11/02 职场文书
2016年主题党日活动总结
2016/04/05 职场文书
提取视频中的音频 Python只需要三行代码!
2021/05/10 Python
Golang的继承模拟实例
2021/06/30 Golang
Spring中的@Transactional的工作原理
2022/06/05 Java/Android
JS精髓原型链继承及构造函数继承问题纠正
2022/06/16 Javascript