js排序算法

1.冒泡排序

/*冒泡排序
* 实现原理:
* 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.快速排序

/*快速排序
* 实现原理:
* 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));

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券