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 相关文章推荐
js 全兼容可高亮二级缓冲折叠菜单
Jun 04 Javascript
JavaScript 程序编码规范
Nov 23 Javascript
js下获得客户端操作系统的函数代码(1:vista,2:windows7,3:2000,4:xp,5:2003,6:2008)
Oct 31 Javascript
JS打开新窗口的2种方式
Apr 18 Javascript
js如何调用qq互联api实现第三方登录
Mar 28 Javascript
JavaScript DOM节点添加示例
Jul 16 Javascript
Node.js node-schedule定时任务隔多少分钟执行一次的方法
Feb 10 Javascript
JavaScript使用原型和原型链实现对象继承的方法详解
Apr 05 Javascript
vue数组对象排序的实现代码
Jun 20 Javascript
vue升级之路之vue-router的使用教程
Aug 14 Javascript
vue页面加载时的进度条功能(实例代码)
Jan 13 Javascript
vue3.0 自适应不同分辨率电脑的操作
Feb 06 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 变量的定义方法
2010/01/26 PHP
ajax+php打造进度条 readyState各状态
2010/03/20 PHP
CentOS安装php v8js教程
2015/02/26 PHP
PHP实现微信发红包程序
2015/08/24 PHP
PHP的Yii框架中创建视图和渲染视图的方法详解
2016/03/29 PHP
php中yii框架实例用法
2020/12/22 PHP
浅析JavaScript中的CSS属性及命名规范
2013/11/28 Javascript
使用Node.js实现一个简单的FastCGI服务器实例
2014/06/09 Javascript
javascript实现五星评价代码(源码下载)
2015/08/11 Javascript
javascript中arguments,callee,caller详解
2016/03/16 Javascript
微信小程序实现锚点定位楼层跳跃的实例
2017/05/18 Javascript
React + webpack 环境配置的方法步骤
2017/09/07 Javascript
apicloud拉起小程序并传递参数的方法示例
2018/11/21 Javascript
ES6知识点整理之数组解构和字符串解构的应用示例
2019/04/17 Javascript
vue cli使用融云实现聊天功能的实例代码
2019/04/19 Javascript
vue实现拖拽的简单案例 不超出可视区域
2019/07/25 Javascript
详解Vue3 Teleport 的实践及原理
2020/12/02 Vue.js
python执行外部程序的常用方法小结
2015/03/21 Python
Python selenium文件上传方法汇总
2020/11/19 Python
Python协程的用法和例子详解
2017/09/09 Python
基于python中pygame模块的Linux下安装过程(详解)
2017/11/09 Python
Python语言描述最大连续子序列和
2017/12/05 Python
python画一个玫瑰和一个爱心
2020/08/18 Python
keras实现theano和tensorflow训练的模型相互转换
2020/06/19 Python
CSS3绘制圆角矩形的简单示例
2015/09/28 HTML / CSS
GOLFINO英国官网:高尔夫服装
2020/04/11 全球购物
应聘教师自荐信
2013/10/12 职场文书
自荐书模板
2013/12/15 职场文书
最新大学职业规划书范文
2013/12/30 职场文书
公司道歉信范文
2014/01/09 职场文书
教师申诉制度
2014/01/29 职场文书
超市中秋节活动方案
2014/02/12 职场文书
班长竞选演讲稿
2014/04/24 职场文书
学雷锋活动总结报告
2014/06/26 职场文书
2015秋季幼儿园开学寄语
2015/03/25 职场文书
SpringCloud的JPA连接PostgreSql的教程
2021/06/26 Java/Android