1、冒泡排序

     //第一种
function bubblesort(ary){
for(var i=0;i<ary.length-1;i++){
for(var j=0;j<ary.length-1-i;j++){
if(ary[j] > ary[j+1]) {//如果前面的数据比后面的大就交换
var items = ary[j];
ary[j] = ary[j+1];
ary[j+1] = items;
}
}
}
return ary;
}
var ary=[2,5,4,1,6,3];
console.log(bubblesort(ary));
//第二种
var bubbleSort=function(arr){
for(var i=0;i<arr.length-1;i++){
for(var j=i+1;j<arr.length;j++){
if(arr[i]>arr[j]){//如果前面的数据比后面的大就交换
var temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
return arr;
}
var arr=[2,5,4,1,6,3];
console.log(bubbleSort(arr));

2、快速排序

// 数组快速排序的原理 : 获取数组的中间项,然后对数组进行循环,判断数组每一项和这个中间项进行比较,比中间项小的放在左边数组,比中间项大的放进右边的数组;然后通过递归对左边数组右边数组进行同样的处理,最后把每一个数组和中间项拼接在一起;
function quickSort(ary) {
// 当数组长度为一时,不需要再递归
if(ary.length<=1){
return ary;
}
// 计算中间项的索引,偶数项取中间两项后面一项,奇数项取中间项
var index = Math.floor(ary.length/2);
// splice : 返回值是一个数组,通姑索引获取中间项
var middle = ary.splice(index,1)[0];
var left = [];
var right = [];
for(var i=0;i<ary.length;i++){
var cur = ary[i];
if(cur<middle){
left.push(cur);
}else{
right.push(cur);
}
}
return quickSort(left).concat(middle,quickSort(right));
}

3、插入排序

function insertSort(ary){
var newAry= [];
newAry.push(ary[0]);
for(var i=1;i<ary.length;i++){
var cur = ary[i];
for(var j=newAry.length-1;j>=0;){
if(cur<newAry[j]){
j--;
if(j===-1){
newAry.unshift(cur);
}
}else{
newAry.splice(j+1,0,cur);
break;
}
}
};
return newAry;
}

js数组冒泡排序、快速排序、插入排序的更多相关文章

  1. JS实现冒泡排序,插入排序和快速排序(从input中获取内容)

    以前参加面试的时候,被问到过让用JS实现一个快速排序,当时太年轻,并没有回答上来. 于是,这里便把三种排序都用JS来做了一下.结合html,从input文本框中获取输入进行排序. 关于这几种算法的原理 ...

  2. js数组冒泡排序

    文章地址 https://www.cnblogs.com/sandraryan/ js数组的冒泡排序是最经典的一种排序方式(我以为). 冒泡排序是吧一组数组的元素两两比较,交换位置,通过多轮比较,实现 ...

  3. js数组冒泡排序,快速排序的原理以及实现

    冒泡排序: 随便从数组中拿一位数和后一位比较,如果是想从小到大排序,那么就把小的那一位放到前面,大的放在后面,简单来说就是交换它们的位置,如此反复的交换位置就可以得到排序的效果. var arr = ...

  4. JS数组冒泡排序&去重

    冒泡排序: var a = [2,1,4,3,6,5]; for(var d = 0 ; d< a.length; d++){ for(var b = d+1; b < a.length; ...

  5. JavaScript 数据结构与算法之美 - 冒泡排序、插入排序、选择排序

    1. 前言 算法为王. 想学好前端,先练好内功,只有内功深厚者,前端之路才会走得更远. 笔者写的 JavaScript 数据结构与算法之美 系列用的语言是 JavaScript ,旨在入门数据结构与算 ...

  6. 算法与数据结构(十三) 冒泡排序、插入排序、希尔排序、选择排序(Swift3.0版)

    本篇博客中的代码实现依然采用Swift3.0来实现.在前几篇博客连续的介绍了关于查找的相关内容, 大约包括线性数据结构的顺序查找.折半查找.插值查找.Fibonacci查找,还包括数结构的二叉排序树以 ...

  7. 冒泡排序与插入排序(C#实现)

    本人应届生面试,发现被问了2次关于排序的算法.当时竟然没写出来!!!好吧,可能是用库函数多了,很久没搞算法了,在纸上写没感觉吧. 今天花了1个多小时写了下冒泡排序与插入排序(C#实现),并写了注释和小 ...

  8. js数组相关知识集合

    一.js数组快速排序 <script type="text/javascript"> var arr = [1, 2, 3, 54, 22, 1, 2, 3]; fun ...

  9. js 中的快速排序算法简单实现

    对于快速排序,最早是在c++中看到,它是利用指针来交换顺序,其实无论哪种语言,原理 和 思想都是一样,然而真正用起来的时候就特别容易忽略一些事实,导致实现失败.废话少说,下面用js实现一下快速排序: ...

随机推荐

  1. 36)PHP,搜寻数据库信息在html中显示(晋级1)

    首先是数据库的样子展示: 然后就是我的PHP主文件了: <?php class db { public $host="localhost" ;//这个是主机的地址 publi ...

  2. RAID和LVM

    EXT家族支持度最广,但创建文件系统慢修复慢存储容量有限 XFS同样是日志文件系统:容量大,支持大存储高性能,创建/修复文件系统快inode与block都是系统需要用到时,才动态配置产生 基本分区(静 ...

  3. bootstrap 学习 ---css样式学习

    bootstrap 适用于响应式布局,移动设备优先的web项目 1.学习bootstrap需要引入bootstrap的css,jquery,bootstrap的js,注意:jquery文件必须在boo ...

  4. 1088. Rational Arithmetic (20)

    1.注意在数字和string转化过程中,需要考虑数字不是只有一位的,如300转为"300",一开始卡在里这里, 测试用例: 24/8 100/10 24/11 300/11 2.该 ...

  5. Struts2加载自定义库注意事项

    新建Struts2项目,添加Struts2的jar包时,往往通过导入自定义库的方式,导入自定义库时,有个地方必须要设置,否则项目无法正常执行,如图所示: 必须要按照上述方式对自定义库进行加载!

  6. 《C Prime Plus》第八节笔记

    第八节 字符输入/输出和输入验证 8.1 单字符I/O:getchar()和putchar() getchar()和putchar()包含在stdio.h头文件中 8.2 缓冲区 无缓冲输入: 直接回 ...

  7. The file named error_log is too large

    The file named errorlog is too large */--> The file named errorlog is too large 1 Problem One day ...

  8. [LC] 443. String Compression

    Given an array of characters, compress it in-place. The length after compression must always be smal ...

  9. 将list转成tree

    using System;using System.Collections.Generic;using System.Linq; namespace Infrastructure{ /// <s ...

  10. Pytorch中的variable, tensor与numpy相互转化的方法

    1.将numpy矩阵转换为Tensor张量 sub_ts = torch.from_numpy(sub_img) #sub_img为numpy类型 2.将Tensor张量转化为numpy矩阵 sub_ ...