简单理解冒泡排序———以Java和JavaScript写法为例

流程思路

冒泡排序流程思路

Java写法

public class Bubbing {

    public static void main(String[] args) {
        int[] data = new int[]{5,4,3,2,1};
        int temp = 0;
        //几次循环,n个数字有n-1次循环
        for (int i = 0; i < data.length - 1; i++) {
            //将第一个数字与其后面的数字两两比较,进行排序。
            /*j < data.length - 1 - i 即该数字所需要比较的次数。因为冒泡排序从最小排到最大,
            排到第i(数组含义,含0)个的时候,就意味着后面有i个已经排好顺序了。因此不需要再继续比较。*/
            for (int j = 0; j < data.length - 1 - i; j++) {
                if (data[j] > data[j + 1]) {
                    temp = data[j];
                    data[j] = data[j + 1];
                    data[j + 1] = temp;
                }
            }
        }
        for (int k = 0; k < data.length; k++) {
            System.out.println(data[k]);
        }
    }
}

Java写法验证结果

Java写法验证结果

JavaScript写法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>The bubbling</title>
</head>
<body>
    <script type="text/javascript">
    function bubble(arr){
        var temp = 0;
        //几次循环,n个数字有n-1次循环
        for(var i = 0;i<arr.length-1;i++){
            console.log(arr);
             //将第一个数字与其后面的数字两两比较,进行排序。
            /*j < data.length - 1 - i 即该数字所需要比较的次数。因为冒泡排序从最小排到最大,
            排到第i(数组含义,含0)个的时候,就意味着后面有i个已经排好顺序了。因此不需要再继续比较。*/
            for(var j = 0;j<arr.length-1-i;j++){
                
                if(arr[j]>arr[j+1]){
                    temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
        return arr;

    }
    console.log(bubble([5,4,3,2,1]));
    </script>
</body>
</html>

JavaScript验证结果

JavaScript验证结果

第一层大循环详解

第一层循环详解

第二层循环详解

第二层循环详解

小结

冒泡排序一般是通过两层循环进行处理,第一层循环主要为了让冒泡排序成功,数组需要进行多少次大循环,这里我们确定了在一个大于等于两个数字的数组时(因为只存在一个数字的数组不需要排序),确定一个数字的排序就需要一个大循环,即n个数字有n-1次大循环;第二层循环主要是将数组的第一个数字与其后面的数字进行比较,然后确定排序。
综上所述,在第二层循环完成的时候,第一层大循环也完成了一次,因此该数组就已经确定好了一个数字的排序,在所有循环完成后,冒泡排序(数字从小到大)就完成了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值