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网络游戏-(模拟城市webgame)提供的一些例子下载
Oct 14 Javascript
使用jquery mobile做幻灯播放效果实现步骤
Jan 04 Javascript
js日期时间补零的小例子
Mar 05 Javascript
解决jquery1.9不支持browser对象的问题
Nov 13 Javascript
JavaScript中实现PHP的打乱数组函数shuffle实例
Oct 11 Javascript
3种Jquery限制文本框只能输入数字字母的方法
Dec 03 Javascript
Jqgrid之强大的表格插件应用
Dec 02 Javascript
JavaScript中的原型prototype完全解析
May 10 Javascript
jquery操作checkbox火狐下第二次无法勾选的解决方法
Oct 10 Javascript
Vue.extend构造器的详解
Jul 17 Javascript
vue综合组件间的通信详解
Nov 06 Javascript
使用Vue实现图片上传的三种方式
Jul 17 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
C# Assembly类访问程序集信息
2009/06/13 PHP
php数组函数序列之array_key_exists() - 查找数组键名是否存在
2011/10/29 PHP
PHP快速按行读取CSV大文件的封装类分享(也适用于其它超大文本文件)
2014/04/10 PHP
PHP中上传多个文件的表单设计例子
2014/11/19 PHP
PHP下载文件的函数实例代码
2016/05/18 PHP
php微信公众平台开发(四)回复功能开发
2016/12/06 PHP
PHP使用 Pear 进行安装和卸载包的方法详解
2019/07/08 PHP
Javascript load Page,load css,load js实现代码
2010/03/31 Javascript
兼容ie、firefox的图片自动缩放的css跟js代码分享
2012/01/21 Javascript
JavaScript动态插入script的基本思路及实现函数
2013/11/11 Javascript
JavaScript阻止浏览器返回按钮的方法
2015/03/18 Javascript
js判断移动端是否安装某款app的多种方法
2015/12/18 Javascript
基于Bootstrap的后台管理面板 Bootstrap Metro Dashboard
2016/06/17 Javascript
jQuery实现点击后高亮背景固定显示的菜单效果【附demo源码下载】
2016/09/21 Javascript
百度搜索框智能提示案例jsonp
2016/11/28 Javascript
Angular2下使用pdf插件的方法详解
2017/04/29 Javascript
VueJS 组件参数名命名与组件属性转化问题
2018/12/03 Javascript
详解webpack 最简打包结果分析
2019/02/20 Javascript
tweenjs缓动算法的使用实例分析
2019/08/26 Javascript
js实现简单掷骰子小游戏
2019/10/24 Javascript
nodejs实现的http、https 请求封装操作示例
2020/02/06 NodeJs
[01:00:54]TI4正赛第二日开场
2014/07/20 DOTA
Python中关键字nonlocal和global的声明与解析
2017/03/12 Python
Python3自动签到 定时任务 判断节假日的实例
2018/11/13 Python
Python基于Tkinter模块实现的弹球小游戏
2018/12/27 Python
python 用for循环实现1~n求和的实例
2019/02/01 Python
Python自定义一个异常类的方法
2019/06/27 Python
python递归法解决棋盘分割问题
2019/07/17 Python
Python中list的交、并、差集获取方法示例
2019/08/01 Python
CSS3制作圆形滚动进度条动画的示例
2020/11/05 HTML / CSS
美国椅子和沙发制造商:La-Z-Boy
2020/10/25 全球购物
.net笔试题
2014/03/03 面试题
自荐信要包含哪些内容
2013/11/06 职场文书
《忆江南》教学反思
2014/04/07 职场文书
教学督导岗位职责
2015/04/10 职场文书
中学语文教学反思
2016/02/16 职场文书