前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >js排序算法

js排序算法

作者头像
山河木马
发布2019-03-05 17:22:21
4.7K0
发布2019-03-05 17:22:21
举报
文章被收录于专栏:山河木马山河木马

1.冒泡排序

代码语言:javascript
复制
/*冒泡排序
* 实现原理:
* 1.两个for循环,比较相邻的两个元素,如果前一个比后一个大,则交换位置
* 2.内部的for循环一遍执行完以后,将得到最大值放在数组的最后
* 3.执行外部的for循环,这时最后一个元素将不做比较
* 4.执行1,2,3
* */
function bubbleSort(arr) {
    for (var i = 0; i < arr.length - 1 ; i++) {
        for (var j = 0; j < arr.length - i -1; j++) {
            if (arr[j] > arr[j + 1]) {
                var swap = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = swap;
            }
        }
    }
}
var arr1 = [3,2,5,7,9,3,14,0,36,1,9];
console.log('before:'+arr1);
bubbleSort(arr1);
console.log('after:'+arr1);

2.快速排序

代码语言:javascript
复制
/*快速排序
* 实现原理:
* 1.快速排序是对冒泡排序的一种改进,第一趟排序时将数据分成两部分,(Math.floor()方法可对一个数进行下舍入。)
* splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。(arr.splice(pivoIndex,1)[0]返回中间的数值。)
* 然后申明两个数组,比中间数值小的放进左数组,比中间数值大的放进右数组。左数组比右数组的所有数据都要小
* 2.递归调用,在两边都实行快速排序
* */
function quickSort(arr) {
    if ( arr.length <= 1 ) {
        return arr;
    }
    var pivoIndex = Math.floor(arr.length / 2);
    var pivot = arr.splice(pivoIndex,1)[0];
    var left = [];
    var right = [];
    for (var i = 0; i < arr.length; i++) {
        if (arr[i] < pivot) {
            left.push(arr[i]);
        } else {
            right.push(arr[i]);
        }
    }
    return quickSort(left).concat([pivot],quickSort(right));
};
var arr2 = [5,3,68,12,47,51,2,9,4,1,8,61,37,69,0,1.2,5.3,9.5];
console.log(quickSort(arr2));
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017/04/13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.冒泡排序
  • 2.快速排序
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档