冒泡排序--双层嵌套,两两比较

冒泡排序的思想
1. 比较相邻元素,按需求归位。
2. 冒泡排序双层嵌套,外层负责比较次数,内层负责比较归位数据。
3. 最大或最小数据的归位后,为优化性能不应该再次进行比较。

冒泡排序实现

public class BubbleSort {

    public static void main(String[] args){
        //定义并直接初始化数组
        int [] arr = {1,8,9,6,3,5,7,4};
        //外层循环,取得循环次数
        for (int i = arr.length-1; i > 0;i--) {
            //内层循环,比较把最大数归位
            for (int j = 0; j < i; j++) {
                if(arr[j] > arr[j+1]){
                    //定义中间变量,并交换位置
                    int temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
        //遍历输出排序好的数组
        for(int k:arr){
            System.out.print(k+" ");
        }
    }
}

冒泡排序的时间复杂度

  1. (比较次数最少)所给列表和预期一致,即所给数据为正序或反序排列好的。则一趟扫描即可完成,内层循环关键字比较次数为n-1,置换元素次数0(即交换位置的代码不执行);忽略系数后时间复杂度为O(n);
  2. (比较次数最多)如果所给数据与预期刚好相反,如需要正序给的为反序。则需要进行置换排序操作了,每趟关键字的比较次数为比较次数n(n-1)/2=O(n^2),忽略系数计算时间复杂度为O(n^2),移动次数每次也进行3次移动置换操作3n(n-1)/2=O(n^2),忽略系数时间复杂度为O(n^2)。
  3. 平均时间复杂度为O(n^2)。

冒泡排序的稳定性
稳定性指排序后相同的元素是否会调换位置。
冒泡排序讲究把小的元素往前调或者把大的元素往后调。冒泡排序比较相邻元素,相同元素排序后仍然是原顺序,所以冒泡排序是稳定的。(如果相邻元素相同跳过比较了,所以排序后的结果是稳定的)

冒泡排序的优缺点
优点:代码简单,双层嵌套即可实现,具有稳定性
缺点:时间复杂度高

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值