lotus

贵有恒何必三更眠五更起 最无益只怕一日曝十日寒

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  1846 随笔 :: 0 文章 :: 109 评论 :: 288万 阅读

1.题目

 

 

 

 

 

2.解法

 

冒泡排序的算法思想是这样的:

比较相邻的两个元素,如果第一个比第二个大(或小),就交换它们的位置;
对每一对相邻的元素重复这个操作,直到遍历完整个数组,这样最大(或最小)的元素就被移动到了数组的末尾;
除了最后一个元素,对剩余的元素重复上述步骤,直到数组完全有序。
冒泡排序的名字来源于它的过程,就像水里的气泡一样,越小(或越大)的元素会逐渐上浮到数组的顶部。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class BubbleSort {
 
    public static void main(String[] args) {
        int[] nums = new int[]{1, 8, 5, 2, 7, 0};
        sortArray(nums);
        System.out.println();
    }
 
    public static void sortArray(int[] nums) {
 
        int length = nums.length;
 
        for (int i = 0; i < length; i++) {
            for (int j = 0; j < length - 1 - i; j++) {
                if (nums[j] > nums[j + 1]) {
                    int temp = nums[j];
                    nums[j] = nums[j + 1];
                    nums[j + 1] = temp;
                }
            }
        }
    }
}

  

冒泡排序的时间复杂度是指执行冒泡排序算法所需要的时间,它取决于比较和交换的次数。

最好的情况是,数组已经有序,只需要进行一趟冒泡,比较 n-1 次,不需要交换,所以时间复杂度是 O (n);
最坏的情况是,数组完全逆序,需要进行 n-1 趟冒泡,每趟比较 n-i 次,并且每次都要交换,所以时间复杂度是 O (n^2);
平均的情况是,每趟冒泡大约需要比较和交换 n/2 次,总共需要进行 n-1 趟冒泡,所以时间复杂度是 O (n^2);
综上,冒泡排序的时间复杂度是 O (n^2)

 

3.总结

posted on   白露~  阅读(31)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示