JS实现冒泡排序

本文介绍了使用JavaScript实现的两种常见排序算法:冒泡排序和快速排序。详细解释了每种算法的工作原理,并提供了易于理解的代码示例。对于理解排序算法在实际应用中的效率差异具有指导意义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天我们来谈谈用JS实现冒泡排序,希望对大家有所帮助:

1.冒泡排序

思路:a)比较两个相邻的元素,如果后一个比前一个大,则交换位置

         b) 第一轮的时候最后一个元素应该是最大的一个

         c) 按照第一步的方法进行两个相邻的元素的比较,由于最后一个元素已经是最大的了,所以最后一个元素不用比较。

代码:

function sort(element){
        for(var i = 0;i<element.length-1;i++) {
            console.log("i="+element[i])
            for(var j = 0;j<element.length-i-1;j++){
                console.log("j="+element[j]);
                console.log("j+1="+element[j+1]);
                if(element[j]>element[j+1]){
                    //把大的数字放到后面
                    var swap = element[j];
                    element[j] = element[j+1];
                    element[j+1] = swap;
                }
            }
            console.log(element);
        }
    }
    var element = [3,5,1,2,7,8,4,5,3,4];
    //console.log("before:"+element);[3,5,1,2,7,8,4,5,3,4];
    sort(element);
    //console.log("after:"+element);[1, 2, 3, 3, 4, 4, 5, 5, 7, 8]

看看打印的结果:




......中间部分省略直接看后面的结果


看到打印的结果,想必大家已经发现,在第一个for循环一个数字的同时,进入到第二个循环,改变数组数字的顺序,将大的数字放在后面,直到遍历完发现没有小的数字在后面的时候,再次进入第一个循环,遍历后面的数字,以此类推,直到遍历完所有的数字,两次遍历结束;

2.快速排序

在看完上面的东西之后,不知道大家有没有发现在实际的工作中如果数据量过大,数组比较复杂,通过两次遍历,同时会带来性能上的问题,不用慌,我们还可以用快速排序的方法进行解决,快速排序对冒泡排序的一种改进,让我们来看看

思路:

第一次排序的时候将数据分成两个部分,一部分比另外一部分所有的数据都要小,然后递归调用,在两边都实行快速排序。

代码:

<script>
    function quickSort(elements){
        console.log("元素"+elements);
        console.log("长度"+elements.length);
        if(elements.length<=1){
            return elements;
        }
        var index = Math.floor(elements.length/2);
        //console.log(index);//5->5->4->3->2->2->1
        var pivot = elements.splice(index,1)[0];//获取删除的数字
        //console.log("pivot="+pivot);//1-8-7-3-6-4.4-5.5
        var arrLeft = [];
        var arrRight = [];
        for(var i = 0;i<elements.length;i++){
            if(elements[i] < pivot){
                arrLeft.push(elements[i]);
                console.log("arrLeft="+arrLeft);
            }else{
                arrRight.push(elements[i]);
                console.log("arrright="+arrRight)
            }
        }
        return quickSort(arrLeft).concat([pivot],quickSort(arrRight));
      
    }

    var elements = [4,5,2,3,7,1,8,9,6,4.4,5.5];
    console.log(quickSort(elements));//[1, 2, 3, 4, 4.4, 5, 5.5, 6, 7, 8, 9]
</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值