lotus

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

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

1.题目

 

 

 

 

 

2.解法

 

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

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

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 2023-04-06 16:29  白露~  阅读(28)  评论(0编辑  收藏  举报