算法时间复杂度

(摘自大话数据结构)推导时间复杂度O()的方法:
1、用常数1取代运行时间中的所有加法常数
2、在修改后的运行次数函数中,只保留最高阶项
3、如果最高阶项存在且不是1,则去除与这个项相乘的常数。最终得到的结果就是大O阶
例子:
1、
int a=1,b=2;
int sum = a+b;
System.out.println(sum);

这个算法的执行次数很明显是1+1+1=3次,根据上述推导方法,要讲运行时间中的加法常数3用1代替,也就是说该程序的时间复杂度是O(1);
2、

for(int i=0;i<n;i++){
  System.out.println(i);
}

该程序的执行次数是n,由于没有常数项,保留最高阶项n,那么该程序的时间复杂度是O(n)。
3、

int i=1;
while(i<n){
i=i*2;}

该程序的执行次数的计算方法是, 2x=n ,得到 x=log2n ,所以这个程序的时间复杂度是 O(log2n)
4、

for(int i=0;i<n;i++){
    for(int j=0;j<n;j++){
        System.out.println(i+j);}}

该程序的执行次数显然是 nn=n2 ,因此时间复杂度是 O(n2)

for(int i=0;i++i<n){
    for(int j=i;j<n;j++){
        System.out.println(i+j);}}

该程序的执行次数是 n+(n1)+...+1=(1+n)n2=n22+n2 ,根据推导法则,只保留最高阶,并将最高阶系数置为1,也就是该程序的时间复杂度是 O(n2)

总结各个排序算法的时间复杂度
注意:在没有特殊说明的情况下,所谓的时间复杂度指的是最坏时间复杂度

排序法平均时间复杂度最好时间复杂度最差时间复杂度稳定性
直接插入排序 O(n2) O(n) O(n2) 稳定
简单选择排序 O(n2) O(n2) O(n2) 不稳定
堆选择排序 O(nlogn) O(nlogn) O(nlogn) 不稳定
冒泡交换排序 O(n2) O(n) O(n2) 稳定
快速交换排序排序 O(nlogn) O(nlogn) O(n2) 不稳定
归并排序 O(nlogn) O(nlogn) O(nlogn) 稳定
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在进行排序算法时间复杂度分析时,我们通常使用大O表示法来描述算法执行所需的时间。大O表示法是一种定性描述算法时间复杂度的方法。 对于希尔排序算法,它的时间复杂度介于O(n^1.3)到O(n^2)之间。具体的时间复杂度取决于所选取的增量序列和增量的取值。根据研究结果,如果增量序列的选择合理,希尔排序算法时间复杂度约为O(n^1.3)。 对于其他排序算法时间复杂度分析,我们可以通过比较基本操作的重复执行次数来进行。假设问题规模为n,解决该问题的算法中基本操作的执行次数为T(n)。如果存在一个辅助函数f(n),使得T(n)/f(n)的极限值为不等于零的常数,那么我们就可以说f(n)是T(n)的同数量级函数。因此,我们可以表示T(n) = O(f(n)),其中O(f(n))被称为算法的渐进时间复杂度,简称时间复杂度时间复杂度越高,算法的执行效率越低。 举例来说,简单选择排序算法的最坏、最好和平均时间复杂度都为O(n^2),因此它是常见排序算法中性能最差的排序算法。在简单选择排序中,每一趟排序都需要选择出最小排序码的记录,需要进行n-i次比较,因此总的比较次数为∑i=1n−1(n−i)=n(n−1)/2=O(n^2)。 综上所述,排序算法时间复杂度分析可以根据不同算法的特点和基本操作的重复执行次数进行。希尔排序算法时间复杂度介于O(n^1.3)到O(n^2)之间,而简单选择排序算法时间复杂度是O(n^2)。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [常见的排序算法及其复杂度分析](https://blog.csdn.net/Lyf_Ah/article/details/123796354)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [排序算法时间复杂度](https://blog.csdn.net/Ehontoo/article/details/124274303)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值