w-haiS 2020-09-22 16:04 采纳率: 64.3%
浏览 51
已采纳

数据结构: 判断下面代码段的复杂度

今天写了一个代码段:代码实现的功能是将一个数组中的所有奇数移到偶数前面。有个要求是复杂度为n,不太确定是不是n,求大佬们帮忙讲解下。

图片说明

  • 写回答

2条回答 默认 最新

  • Linux猿 Linux领域优质创作者 2020-09-24 21:31
    关注

    先说程序的复杂度:两层for循环,虽然第二层for循环是从i+1开始的,其实可以忽略,故总的复杂度为O(n^2)。
    复杂度为O(n)的算法是:使用两个指针 i 和 j,i从前往后遍历,直到 i 指向偶数,j 从后往前遍历,直到 j 指向奇数,
    每次 i 和 j 符合条件的时候交换,然后重复操作,一直到 i >= j ,这样遍历数组一次,复杂度为O(n)。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已采纳回答 8月13日

悬赏问题

  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)