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 相关文章推荐
一步一步制作jquery插件Tabs实现过程
Jul 06 Javascript
js 表单提交后按钮变灰的实例代码
Aug 16 Javascript
纯js简单日历实现代码
Oct 05 Javascript
Javascript 浮点运算精度问题分析与解决
Mar 26 Javascript
JavaScript制作淘宝星级评分效果的思路
Jun 23 Javascript
谈一谈bootstrap响应式布局
May 23 Javascript
深入理解逻辑表达式的用法 与或非的用法
Jun 06 Javascript
浅谈Node.js:理解stream
Dec 08 Javascript
15个非常实用的JavaScript代码片段
Dec 18 Javascript
BootStrap组件之进度条的基本用法
Jan 19 Javascript
electron + vue项目实现打印小票功能及实现代码
Nov 25 Javascript
react 移动端实现列表左滑删除的示例代码
Jul 04 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
《破坏领主》销量已超100万 未来将继续开发新内容
2020/03/08 其他游戏
第九节--绑定
2006/11/16 PHP
php中将时间差转换为字符串提示的实现代码
2011/08/08 PHP
php跨服务器访问方法小结
2015/05/12 PHP
WIFI万能钥匙密码查询接口实例
2015/09/28 PHP
PHP生成及获取JSON文件的方法
2016/08/23 PHP
ASP.NET中AJAX 调用实例代码
2012/05/03 Javascript
jquery实现动态操作select选中
2015/02/11 Javascript
jquery实现弹出层登录和全屏层注册特效
2015/08/28 Javascript
JavaScript获取各大浏览器信息图示
2015/11/20 Javascript
一不小心就做错的JS闭包面试题
2015/11/25 Javascript
详解JavaScript逻辑Not运算符
2015/12/04 Javascript
使用jquery如何获取时间
2016/10/13 Javascript
vue省市区三联动下拉选择组件的实现
2017/04/28 Javascript
基于Vue单文件组件详解
2017/09/15 Javascript
在小程序中集成redux/immutable/thunk第三方库的方法
2018/08/12 Javascript
vue实现键盘输入支付密码功能
2018/08/18 Javascript
搭建基于express框架运行环境的方法步骤
2018/11/15 Javascript
Node.js中package.json中库的版本号(~和^)
2019/04/02 Javascript
vue 使用鼠标滚动加载数据的例子
2019/10/31 Javascript
[01:08]DOTA2次级职业联赛 - Wings 战队宣传片
2014/12/01 DOTA
[02:11]完美世界DOTA2联赛10月28日赛事精彩集锦:来吧展示实力强劲
2020/10/29 DOTA
Python实现windows下模拟按键和鼠标点击的方法
2015/03/13 Python
Python设计模式之原型模式实例详解
2019/01/18 Python
python中的逆序遍历实例
2019/12/25 Python
英国DIY和家居装饰领域的主要品牌:Wickes
2019/11/26 全球购物
会议活动邀请函
2014/01/27 职场文书
客户接待方案
2014/02/26 职场文书
请假条范文大全
2014/04/10 职场文书
幼儿园户外活动总结
2014/07/04 职场文书
师范生见习报告范文
2014/11/03 职场文书
母亲节寄语大全
2015/02/27 职场文书
家装业务员岗位职责
2015/04/03 职场文书
遗愿清单观后感
2015/06/09 职场文书
Python控制台输出俄罗斯方块的方法实例
2021/04/17 Python
Pandas实现DataFrame的简单运算、统计与排序
2022/03/31 Python