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 相关文章推荐
EasyUI的treegrid组件动态加载数据问题的解决办法
Dec 11 Javascript
游览器中javascript的执行过程(图文)
May 20 Javascript
原生javascript实现获取指定元素下所有后代元素的方法
Oct 28 Javascript
javascript中AJAX用法实例分析
Jan 30 Javascript
封装了jQuery的Ajax请求全局配置
Feb 05 Javascript
jQuery仿Flash上下翻动的中英文导航菜单实例
Mar 10 Javascript
JavaScript位置与大小(1)之正确理解和运用与尺寸大小相关的DOM属性
Dec 26 Javascript
基于JavaScript实现弹出框效果
Feb 19 Javascript
学习AngularJs:Directive指令用法(完整版)
Apr 26 Javascript
基于jQuery实现滚动切换效果
Dec 02 Javascript
vue中的自定义分页插件组件的示例
Aug 18 Javascript
微信小程序下拉加载和上拉刷新两种实现方法详解
Sep 05 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
re0第二季蕾姆被制作组打入冷宫!艾米莉亚女主扶正,原因唏嘘
2020/04/02 日漫
用PHP的ob_start() 控制您的浏览器cache
2009/08/03 PHP
基于PHP Socket配置以及实例的详细介绍
2013/06/13 PHP
PHP实现把MySQL数据库导出为.sql文件实例(仿PHPMyadmin导出功能)
2014/05/10 PHP
PHP5.6.8连接SQL Server 2008 R2数据库常用技巧分析总结
2019/05/06 PHP
js中字符替换函数String.replace()使用技巧
2011/08/14 Javascript
JS教程:window.location使用方法的区别介绍
2013/10/04 Javascript
原生js实现淘宝首页点击按钮缓慢回到顶部效果
2014/04/06 Javascript
javascript解析json数据的3种方式
2014/05/08 Javascript
JavaScript搜索字符串并将搜索结果返回到字符串的方法
2015/04/06 Javascript
JavaScript实现select添加option
2015/07/03 Javascript
JavaScript中常用的验证reg
2016/10/13 Javascript
从零开始学习Node.js系列教程四:多页面实现数学运算的client端和server端示例
2017/04/13 Javascript
React Native中导航组件react-navigation跨tab路由处理详解
2017/10/31 Javascript
vue2.0在table中实现全选和反选的示例代码
2017/11/04 Javascript
Angular2+如何去除url中的#号详解
2017/12/20 Javascript
微信公众号开发之微信支付代码记录的实现
2019/10/16 Javascript
JavaScript定时器使用方法详解
2020/03/26 Javascript
Javascript原型链及instanceof原理详解
2020/05/25 Javascript
Nuxt.js 静态资源和打包的操作
2020/11/06 Javascript
js实现简易点击切换显示或隐藏
2020/11/29 Javascript
详谈Python基础之内置函数和递归
2017/06/21 Python
Python3.6简单操作Mysql数据库
2017/09/12 Python
Python求出0~100以内的所有素数
2018/01/23 Python
python 字典item与iteritems的区别详解
2020/04/25 Python
Pytorch 扩展Tensor维度、压缩Tensor维度的方法
2020/09/09 Python
世界领先的电子书网站:eBooks.com(在线购买小说、非小说和教科书)
2019/03/30 全球购物
MIRTA官网:手工包,100%意大利制造
2020/02/11 全球购物
运动会领导邀请函
2014/02/05 职场文书
新闻编辑自荐书范文
2014/02/12 职场文书
药剂专业自荐书
2014/06/20 职场文书
先进个人评语大全
2015/01/04 职场文书
专业技术职务聘任证明
2015/03/02 职场文书
爱心捐赠活动简讯
2015/07/20 职场文书
祝酒词范文
2015/08/12 职场文书
高中数学课堂教学反思
2016/02/18 职场文书