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的让非HTML5浏览器支持placeholder属性的代码
May 24 Javascript
jQuery源码分析-04 选择器-Sizzle-工作原理分析
Nov 14 Javascript
javascript针对DOM的应用分析(二)
Apr 15 Javascript
jQuery操作input type=radio的实现代码
Jun 14 Javascript
javascript 获取iframe里页面中元素值的方法
Feb 17 Javascript
JavaScript利用正则表达式去除日期中的-
Jun 09 Javascript
win7下安装配置node.js+express开发环境
Dec 06 Javascript
Javascript数组Array方法解读
Mar 13 Javascript
深入理解jQuery之事件移除
Jun 02 Javascript
node.js实现回调的方法示例
Mar 01 Javascript
jQuery插件echarts设置折线图中折线线条颜色和折线点颜色的方法
Mar 03 Javascript
jquery dataTable 获取某行数据
May 05 jQuery
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/05/10 PHP
PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法
2014/05/04 PHP
php的curl封装类用法实例
2014/11/07 PHP
php实现的中文分词类完整实例
2017/02/06 PHP
php+ajax实现异步上传文件或图片功能
2017/07/18 PHP
PHP迭代器接口Iterator用法分析
2017/12/28 PHP
JavaScript高级程序设计(第3版)学习笔记 概述
2012/10/11 Javascript
jQuery中校验时间格式的正则表达式小结
2013/09/22 Javascript
JavaScript实现列表分页功能特效
2015/05/15 Javascript
一不小心就做错的JS闭包面试题
2015/11/25 Javascript
jQuery实现微信长按识别二维码功能
2016/08/26 Javascript
详谈表单重复提交的三种情况及解决方法
2017/08/16 Javascript
vue router 跳转时打开新页面的示例方法
2019/07/28 Javascript
浅谈vuex的基本用法和mapaction传值问题
2019/11/08 Javascript
node crawler如何添加promise支持
2020/02/01 Javascript
vue实现带过渡效果的下拉菜单功能
2020/02/19 Javascript
jquery向后台提交数组的代码分析
2020/02/20 jQuery
[54:47]Liquid vs VP Supermajor决赛 BO 第五场 6.10
2018/07/05 DOTA
Python基于scapy实现修改IP发送请求的方法示例
2017/07/08 Python
pandas使用get_dummies进行one-hot编码的方法
2018/07/10 Python
python之列表推导式的用法
2019/11/29 Python
Python Numpy 控制台完全输出ndarray的实现
2020/02/19 Python
python 使用while循环输出*组成的菱形实例
2020/04/12 Python
python安装和pycharm环境搭建设置方法
2020/05/27 Python
PyQt5实现简单的计算器
2020/05/30 Python
html5+css3之动画在webapp中的应用
2014/11/21 HTML / CSS
CSS3制作炫酷的自定义发光文字
2016/03/28 HTML / CSS
提供世界各地便宜的机票:Sky-tours
2016/07/21 全球购物
The North Face官方旗舰店:美国著名户外品牌
2020/09/28 全球购物
Java面试题:请问一下代码输出是什么
2015/05/27 面试题
《湘夫人》教学反思
2014/02/21 职场文书
大学班级文化建设方案
2014/05/06 职场文书
支行行长竞聘演讲稿
2014/05/15 职场文书
岗位明星事迹材料
2014/05/18 职场文书
2015年学校总务处工作总结
2015/05/19 职场文书
调解协议书范本
2016/03/21 职场文书