js冒泡排序和快速排序实现原理和方法

本文深入解析了两种常见的排序算法:快速排序和冒泡排序。快速排序通过比较相邻元素并逐步将最大值置于末尾来实现排序,而冒泡排序则选取中间值作为基准,将所有小于基准的值移至左侧,大于基准的值移至右侧,再对两侧子数组递归操作。文章提供了详细的代码实现,并说明了如何调整代码以实现递减排序。
摘要由CSDN通过智能技术生成

面试经常遇到这个问题,所以整理下,以便理解。

经常用到的排序方法有两种,冒泡排序和快速排序。

1.先说快速排序

原理:每一次比较相邻两个数的大小,通过第一轮循环排序,找到最大值放到后面,第二轮找到二大值放后面。

代码实现:

sort(arr: Array<any>) {
        for(let i = 0; i<arr.length;i++) {
            for(let j = 0;j<arr.length-i-1;j++){
                let tmp = arr[j];
                if(arr[j] > arr[j+1]){
                    arr[j] = arr[j+1];
                    arr[j+1] = tmp;
                }
            }
        }
        return arr;
    }

比如说执行[19,49,89,5,8,34,1,5,63]这个数组,经过第一轮循环会把89取出来放在最后面,然后再对前面的数据进行第二轮循环,会拿到63,依次类推。

注:如果需要把数组递减排序,把上面代码中的arr[j]>arr[j+1]改为小于符号即可。

2.冒泡排序

原理:取一个中间值,通过这个之间值和数组中的树相比,比它小的放左边,比它大的放右边,再依次递归左侧和右侧的数组,以此达到排序目的。

代码实现:

quickSort(arr:Array<any>):Array<any> {
        if( arr.length < 1) {
            return  arr;
        }
        let num = Math.floor(arr.length/2);
                let middle = arr.splice(num,1)[0];
        let leftArr = [];
        let rightArr = [];
        for(let i = 0;i < arr.length; i++) {
            if (middle > arr[i]) {
                leftArr.push(arr[i]);
            } else {
                rightArr.push(arr[i]);
            }
        }
        return this.quickSort(leftArr).concat([middle],this.quickSort(rightArr));
    }

同理,如果要得到一个递减的数组 把middel>arr[i]中的大于改为小于即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值