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 &amp; DHTML 实例编程(教程)基础知识
Jun 02 Javascript
基于jQuery实现美观且实用的倒计时实例代码
Dec 30 Javascript
分享两段简单的JS代码防止SQL注入
Apr 12 Javascript
jQuery Mobile页面返回不需要重新get
Apr 26 Javascript
jquery 全选、全不选、反选效果的实现代码【推荐】
May 05 Javascript
BootStrap中Tab页签切换实例代码
May 30 Javascript
JS使用正则表达式过滤多个词语并替换为相同长度星号的方法
Aug 03 Javascript
基于Angular.js实现的触摸滑动动画实例代码
Feb 19 Javascript
jQuery滚动监听实现商城楼梯式导航效果
Mar 06 Javascript
vue项目实现github在线预览功能
Jun 20 Javascript
Vue2实时监听表单变化的示例讲解
Aug 30 Javascript
vue 实现弹窗关闭后刷新效果
Apr 08 Vue.js
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 面向对象详解
2012/09/13 PHP
php实现快速排序的三种方法分享
2014/03/12 PHP
11个PHPer必须要了解的编程规范
2014/09/22 PHP
php采集中国代理服务器网的方法
2015/06/16 PHP
分享3个php获取日历的函数
2015/09/25 PHP
thinkPHP简单遍历数组方法分析
2016/05/16 PHP
PHP带节点操作的无限分类实现方法详解
2016/11/09 PHP
[HTML/CSS/Javascript]WWTJS
2007/09/25 Javascript
ExtJS 2.0实用简明教程之应用ExtJS
2009/04/29 Javascript
javascript中注册和移除事件的4种方式
2013/03/20 Javascript
javascript获取url上某个参数的方法
2013/11/08 Javascript
浅析hasOwnProperty方法的应用
2013/11/20 Javascript
javascript实例--教你实现扑克牌洗牌功能
2014/05/15 Javascript
javascript实现图像循环明暗变化的方法
2015/02/25 Javascript
jQuery使用$.get()方法从服务器文件载入数据实例
2015/03/25 Javascript
Javascript通过overflow控制列表闭合与展开的方法
2015/05/15 Javascript
jQuery实现简洁的轮播图效果实例
2016/09/07 Javascript
javascript的函数劫持浅析
2016/09/26 Javascript
JavaScript实现的商品抢购倒计时功能示例
2017/04/17 Javascript
js实现股票实时刷新数据案例
2017/05/14 Javascript
vue-router 源码之实现一个简单的 vue-router
2018/07/02 Javascript
vue2.0 element-ui中el-select选择器无法显示选中的内容(解决方法)
2018/08/24 Javascript
vue+element搭建后台小总结 el-dropdown下拉功能
2020/04/10 Javascript
原生js实现点击轮播切换图片
2020/02/11 Javascript
vue添加锚点,实现滚动页面时锚点添加相应的class操作
2020/08/10 Javascript
[33:42]LGD vs OG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python矩阵常见运算操作实例总结
2017/09/29 Python
Python 一句话生成字母表的方法
2019/01/02 Python
Python 图像对比度增强的几种方法(小结)
2019/09/25 Python
意大利买卖二手奢侈品网站:LAMPOO
2020/06/03 全球购物
琳达·法罗眼镜英国官网:Linda Farrow英国
2021/01/19 全球购物
中学生校园广播稿
2014/01/16 职场文书
大学学生会竞选演讲稿
2014/04/25 职场文书
大三学生学年自我鉴定
2014/09/12 职场文书
领导班子民主生活会整改措施(工商局)
2014/09/21 职场文书
分析设计模式之模板方法Java实现
2021/06/23 Java/Android