首页 > 试题广场 >

冒泡排序算法在非有序的序列中时间复杂度是?( )

[单选题]
冒泡排序算法在非有序的序列中时间复杂度是( )
  • O(nlogn)
  • O(n^2)
  • O(n)
  • O(n^2logn)
推荐
B 最坏情况复杂度为O(n2)
编辑于 2017-03-03 08:40:52 回复(0)

时间复杂度

插入排序 O(n^2)
冒泡排序 O(n^2)
选择排序 O(n^2)
快速排序 O(n log n)
堆排序 O(n log n)
归并排序 O(n log n)
基数排序 O(n)
希尔排序 O(n^1.25)
发表于 2017-08-15 10:03:35 回复(0)
编辑于 2019-10-21 17:05:45 回复(3)
冒泡无论怎样都是n的平方
发表于 2020-06-18 10:54:18 回复(0)
冒泡排序,两次for循环嵌套,肯定是n2
发表于 2017-02-20 09:47:29 回复(1)
冒泡排序时间复杂度永远为O(n^2)
发表于 2022-08-20 17:52:44 回复(0)
冒泡排序,n轮排序,每轮排序找出极大值大值,并在后续轮循环中找出已经找出的极值,两个for循环,也就是O(n)时间复杂度,冒泡排序最稳定
发表于 2022-06-26 19:31:34 回复(0)
直接选择排序不稳定
发表于 2022-01-15 00:56:03 回复(0)
反正冒泡无论怎样都是n的平方
发表于 2020-03-23 13:42:04 回复(0)
他说的非有序,逆序不也是有序吗。。。。
发表于 2019-11-21 15:38:48 回复(0)

一般的冒泡排序都是两个for循环,所以复杂度是O(n^2),所说的在最优情况下复杂度为O(n),是被优化过的代码

public class BubbeSort02 {

    @Test
    public void test1(){
        boolean flag = true;
        int[] arr = {2,1,3,4,5};
        int temp;
        for (int i = 0; i < arr.length-1; i++) {
            for (int 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;
                    flag=false;
                }
            }
            if(!flag){
                //没有发生交换则退出循环;
                break;
            }
        }
        System.out.println(Arrays.toString(arr));
    }
}
发表于 2019-02-17 21:28:38 回复(0)
b
发表于 2017-02-09 18:53:50 回复(0)
b
发表于 2017-01-11 23:52:45 回复(0)