排序算法的时间复杂度

链接:直接插入排序的平均时间复杂度为( )。__牛客网
来源:牛客网
 

一、时间复杂度:

(1)定义:

时间复杂度是用来定性描述算法执行所需要的时间。现假设问题规模为n,解决该问题的算法中基本操作重复执行的次数是T(n)。如果有一个辅助函数f(n)使得T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数,因此有T(n)=O(f(n)),此时O(f(n))称为算法的渐进时间复杂度,简称时间复杂度。时间复杂度越高,算法的执行效率越低。

(2)计算方法:

1)首先找出算法中所有重复执行的基本操作并确定总的的执行次数T(n);

2)然后找出T(n)的同数量级函数f(n);

3)最后时间复杂度是O(f(n))。

技巧:

1)一重循环的时间复杂度为O(n),两重循环的时间复杂度为O(n^2),三重循环的时间复杂度为O(n^3),依次类推;

2)二分的时间复杂度为O(logn);

3)一个循环里套一个二分的时间复杂度为O(nlogn)。

(3)举例说明:

for (i = 1; i <= n; i++)

{

    for(j = 1;j <= n;j++)

    {

        printf(“%d,%d”,i,j);

        for (k =1;k  <= n; k++)

        {

             printf(“%d,%d,%d”,i,j,k);

        }

    }

}

1) 

第一个重复执行的基本操作printf(“%d,%d”,i,j),它的执行次数是n^2;

第二个重复执行的基本操作printf(“%d,%d,%d”,i,j,k),它的执行次数是n^3;

总的执行次数是T(n) = n^2 + n^3。

2)

T(n)的同数量级函数是n^3。

3)

时间复杂度是O(n^3)

(4)影响算法时间复杂度的因素:

1)算法本身

2)问题规模

3)数据的初始状态

二、排序算法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值