JS实现冒泡排序

今天我们来谈谈用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>

### 回答1: JavaScript 实现冒泡排序的方法是:首先,比较相邻的元素。如果第一个比第二个大,就交换他们两个。然后,对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。然后再下一轮,重复上述过程,直到排序完成。 ### 回答2: 冒泡排序是一种简单的排序算法,它通过比较相邻的元素并交换,使得较大(或较小)的元素逐渐移动到数组的一端。 以下是使用JavaScript实现冒泡排序的代码: ```javascript function bubbleSort(arr) { // 遍历数组的长度次数,每次排序将最大的元素移动到数组的末尾 for (let i = 0; i < arr.length; i++) { // 在每次遍历时,可以优化遍历的范围,因为每次遍历后,最大的元素会被移动到数组的末尾,所以下次遍历时可以减少遍历的次数 for (let j = 0; j < arr.length - 1 - i; j++) { // 比较相邻的两个元素,如果前一个元素大于后一个元素,则交换它们的位置 if (arr[j] > arr[j + 1]) { let temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } return arr; } // 示例 let arr = [5, 3, 8, 4, 2]; let sortedArr = bubbleSort(arr); console.log(sortedArr); // 输出 [2, 3, 4, 5, 8] ``` 以上是使用JavaScript实现冒泡排序的简单示例。冒泡排序的时间复杂度为O(n^2),在实际应用中不适合用于大规模数据的排序,但可以用于小规模数据或已经基本有序的数据的排序。 ### 回答3: 冒泡排序是一种简单但效率较低的排序算法,可以使用JavaScript来实现。下面是使用JavaScript实现冒泡排序的代码: ```javascript function bubbleSort(arr) { var len = arr.length; for (var i = 0; i < len - 1; i++) { for (var j = 0; j < len - 1 - i; j++) { if (arr[j] > arr[j + 1]) { var temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } return arr; } var array = [5, 3, 8, 4, 2]; console.log(bubbleSort(array)); // 输出 [2, 3, 4, 5, 8] ``` 以上代码定义了一个`bubbleSort`函数,它接受一个数组作为参数,并使用冒泡排序算法对数组进行排序。在内部的两个嵌套循环中,比较相邻元素的大小,如果前一个元素大于后一个元素,则交换它们的位置。重复执行这个过程,直到整个数组排序完成。 在上述的例子中,数组`[5, 3, 8, 4, 2]`经过冒泡排序后会变成`[2, 3, 4, 5, 8]`,并通过`console.log()`函数输出到控制台上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值