js实现冒泡排序

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
        
    </body>
</html>
<script>
    //选择排序
    var a=[1,2,88,24,34,6];
    for(var i=0;i<a.length-1;i++){
        for(var j=i+1;j<a.length;j++)
        {
            if(a[i]>a[j])
            {
                var temp;
                temp=a[i];
                a[i]=a[j];
                a[j]=temp;
            }
        }
        
    }
    //冒泡排序
    var a2=[1,2,88,24,34,6];
    for(var i=0;i<a2.length-1;i++)
    {
        for(var j=0;j<a2.length-i-1;j++){
            if(a[j]>a[j]+1)
            {
                var temp;
                temp=a[j];
                a[j]=a[j+1];
                a[j+1]=temp;
                
            }
            
        }
    }
    console.log(a)
</script>

 

### 使用 JavaScript 实现冒泡排序算法 冒泡排序是一种简单的排序算法,其核心思想是比较相邻的元素并根据条件交换它们的位置。以下是基于提供的引用内容以及标准实现方式的具体说明。 #### 冒泡排序的核心逻辑 冒泡排序通过多次遍历数组完成排序操作。对于长度为 `n` 的数组: - 外层循环控制排序轮数,总共需要执行 `n-1` 轮。 - 内层循环负责每一轮中相邻元素的比较和可能的交换,随着已排序部分的增长,内层循环的范围逐渐缩小。 #### 完整代码示例 以下是一个完整的 JavaScript 实现: ```javascript function bubbleSort(arr) { let n = arr.length; for (let i = 0; i < n - 1; i++) { // 控制排序轮数 for (let j = 0; j < n - i - 1; j++) { // 每轮比较次数减少 if (arr[j] > arr[j + 1]) { // 如果前一个元素大于后一个元素则交换 let temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } return arr; } // 测试代码 let array = [4, 23, 100, 9, 7, 49, 36, 57]; console.log("原始数据:" + array); bubbleSort(array); console.log("最终排序:" + array); ``` 此代码展示了如何逐步将较大的元素移动到数组右侧,从而完成从小到大的排序过程[^1]。 #### 动态演示版本 如果希望在网页上展示排序过程,可以使用以下代码片段: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>冒泡排序动态演示</title> <script> window.onload = function() { var arr = [2, 4, 3, 1, 5]; document.getElementById('output').innerHTML += '初始数组: [' + arr.join(', ') + ']<br>'; for (var i = 0; i < arr.length - 1; i++) { for (var j = 0; j < arr.length - 1 - i; j++) { if (arr[j] > arr[j + 1]) { var temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } document.getElementById('output').innerHTML += '第' + i + '次排序: [' + arr.join(', ') + ']<br>'; } document.getElementById('output').innerHTML += '最终结果: [' + arr.join(', ') + ']'; }; </script> </head> <body> <div id="output"></div> </body> </html> ``` 这段 HTML 和 JavaScript 结合的代码可以在浏览器中运行,并显示每次排序后的状态[^2]。 #### 排序优化 虽然基本版的冒泡排序能够正常工作,但在某些情况下可以通过检测是否发生过交换来提前终止排序流程,提高效率。改进后的代码如下: ```javascript function optimizedBubbleSort(arr) { let n = arr.length; let swapped; do { swapped = false; for (let j = 0; j < n - 1; j++) { if (arr[j] > arr[j + 1]) { let temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; swapped = true; } } n--; // 缩小未排序区域 } while (swapped); return arr; } ``` 这种优化减少了不必要的迭代,在最佳情况下的时间复杂度可达到 O(n)[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值