谁能帮忙分析一下冒泡排序的时间复杂度,要详细的哦~·

来源:百度知道 编辑:UC知道 时间:2024/06/13 23:00:38

计算时间复杂度主要是看这几个指标:
1 input size(输入)
2 basic operation/most costly operation(基本操作)
3 determine average cases(决定最坏和平均的时间)
4 sove it(计算)
在冒泡排序中的核心部分是
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
if(a[j+1]<a[j]) swap(a[j],a[j+1]);

根据上面的步骤
1 size = n
2 basic operation = key comparison(比较)
因为比较是每次都要做的,而交换不一定每次都要做
3 average case = worst case
4 solve it
就是计算一共进行多少次比较这里就是用数学里的求和公式sigma求出来
最内层循环key comparison的次数是从0到n-i-1,外层循环i从0到n-1
所以总数是对(n-1-i)求和,i从0到n-1
(n-1)*n - (1+2+3+4+…+n-1)= n(n-1)/2 = O(n^2)
所以时间复杂度是n的平方

N^2
一定没错!