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 相关文章推荐
Add a Picture to a Microsoft Word Document
Jun 15 Javascript
jQuery 获取对象 基本选择与层级
May 31 Javascript
XMLHTTP 乱码的解决方法(UTF8,GB2312 编码 解码)
Jan 12 Javascript
从零开始学习jQuery (三) 管理jQuery包装集
Feb 23 Javascript
jquery ajax方式直接提交整个表单核心代码
Aug 15 Javascript
Javascript图片上传前的本地预览实例
Jun 16 Javascript
IE浏览器不支持getElementsByClassName的解决方法
Aug 27 Javascript
浅谈JavaScript超时调用和间歇调用
Aug 30 Javascript
JS获取一个表单字段中多条数据并转化为json格式
Oct 17 Javascript
js实现点击展开隐藏效果(实例代码)
Sep 28 Javascript
17道题让你彻底理解JS中的类型转换
Aug 08 Javascript
vue实现图书管理系统
Dec 29 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基础学习小结
2011/04/17 PHP
PHP图像处理之imagecreate、imagedestroy函数介绍
2014/11/19 PHP
php自定义加密与解密程序实例
2014/12/31 PHP
PHP处理大量表单字段的便捷方法
2015/02/07 PHP
PHP实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
PHP预定义超全局数组变量小结
2018/08/20 PHP
asp函数split()对应php函数explode()
2019/02/27 PHP
PHP实现微信小程序用户授权的工具类示例
2019/03/05 PHP
幻宇的层模拟窗口效果-提供演示和下载
2007/01/20 Javascript
jQuery 性能优化指南 (1)
2009/05/21 Javascript
JavaScript toFixed() 方法
2010/04/15 Javascript
js中判断控件是否存在
2010/08/25 Javascript
jquery 学习之二 属性(类)
2010/11/25 Javascript
有关于JS辅助函数inherit()的问题
2013/04/07 Javascript
For循环中分号隔开的3部分的执行顺序探讨
2014/05/27 Javascript
利用jQuery对无序列表排序的简单方法
2016/10/16 Javascript
详解如何在webpack中做预渲染降低首屏空白时间
2018/08/22 Javascript
JS实现匀速与减速缓慢运动的动画效果封装示例
2018/08/27 Javascript
详解React之key的使用和实践
2018/09/29 Javascript
推荐几个不错的console调试技巧实现
2019/12/20 Javascript
在vue中实现echarts随窗体变化
2020/07/27 Javascript
python中字符串前面加r的作用
2015/06/04 Python
Python生成随机数组的方法小结
2017/04/15 Python
Python判断两个list是否是父子集关系的实例
2018/05/04 Python
对Python 3.2 迭代器的next函数实例讲解
2018/10/18 Python
python之PyQt按钮右键菜单功能的实现代码
2019/08/17 Python
Python 中 -m 的典型用法、原理解析与发展演变
2019/11/11 Python
使用 Python 处理3万多条数据只要几秒钟
2020/01/19 Python
Django之choices选项和富文本编辑器的使用详解
2020/04/01 Python
加拿大租车网站:Enterprise Rent-A-Car
2018/07/26 全球购物
个人自我鉴定怎么写
2013/10/28 职场文书
妇女干部培训方案
2014/05/12 职场文书
浪漫婚礼主题活动策划方案
2014/09/15 职场文书
党员教师群众路线思想汇报范文
2014/10/28 职场文书
毕业答辩开场白范文
2015/05/27 职场文书
weblogic服务建立数据源连接测试更新mysql驱动包的问题及解决方法
2022/01/22 MySQL