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 相关文章推荐
通过pjax实现无刷新翻页(兼容新版jquery)
Jan 31 Javascript
JS判断网页广告是否被浏览器拦截过滤的代码
Apr 05 Javascript
jQuery实现信息提示框(带有圆角框与动画)效果
Aug 07 Javascript
JavaScript学习笔记之数组求和方法
Mar 23 Javascript
最原始的jQuery注册验证方式
Oct 11 Javascript
详解Jquery的事件操作和文档操作
Dec 19 Javascript
Vue实现active点击切换方法
Mar 16 Javascript
vue 设置proxyTable参数进行代理跨域
Apr 09 Javascript
JavaScript求一个数组中重复出现次数最多的元素及其下标位置示例
Jul 23 Javascript
JS函数节流和防抖之间的区分和实现详解
Jan 11 Javascript
Vue实现手机计算器
Aug 17 Javascript
JavaScript实现下拉列表
Jan 20 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
PHP的面向对象编程
2006/10/09 PHP
PHP 递归效率分析
2009/11/24 PHP
7个超级实用的PHP代码片段
2011/07/11 PHP
php获取淘宝分类id示例
2014/01/16 PHP
PHP封装的数据库模型Model类完整示例【基于PDO】
2019/03/14 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
用js实现的页面关键字密度查询代码
2007/12/27 Javascript
jquery解析JSON数据示例代码
2014/03/17 Javascript
node.js中的fs.fsyncSync方法使用说明
2014/12/15 Javascript
JavaScript 匿名函数和闭包介绍
2015/04/13 Javascript
jQuery中closest和parents的区别分析
2015/05/07 Javascript
js和jq使用submit方法无法提交表单的快速解决方法
2016/05/17 Javascript
javascript正则表达式模糊匹配IP地址功能示例
2017/01/06 Javascript
jquery与ajax获取特殊字符实例详解
2017/01/08 Javascript
详解Vue中过度动画效果应用
2017/05/25 Javascript
浅谈在不使用ssr的情况下解决Vue单页面SEO问题(2)
2018/11/08 Javascript
JavaScript时间与时间戳的转换操作实例分析
2018/12/07 Javascript
如何制作一个Node命令行图像识别工具
2018/12/12 Javascript
python开发的小球完全弹性碰撞游戏代码
2013/10/15 Python
python基础教程之自定义函数介绍
2014/08/29 Python
解析Python中的变量、引用、拷贝和作用域的问题
2015/04/07 Python
Python时间的精准正则匹配方法分析
2017/08/17 Python
同时安装Python2 &amp; Python3 cmd下版本自由选择的方法
2017/12/09 Python
Django中Forms的使用代码解析
2018/02/10 Python
Django 实现下载文件功能的示例
2018/03/06 Python
Python cookie的保存与读取、SSL讲解
2020/02/17 Python
Spring @Enable模块驱动原理及使用实例
2020/06/23 Python
项目合作计划书
2014/01/09 职场文书
财务管理专业毕业生求职信
2014/06/02 职场文书
国企干部对照检查材料
2014/08/22 职场文书
小学“向国旗敬礼”网上签名寄语活动总结
2014/09/27 职场文书
八年级英语教学计划
2015/01/23 职场文书
清明节文明祭祀倡议书
2015/04/28 职场文书
会计主管竞聘书
2015/09/15 职场文书
CocosCreator如何实现划过的位置显示纹理
2021/04/14 Javascript
pytorch Dropout过拟合的操作
2021/05/27 Python