`
qingfengjushi1
  • 浏览: 140907 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

选择排序时间复杂度计算浅析

 
阅读更多
选择排序时间复杂度计算浅析:
代码:
void select_sort(int a[], int n) {
   for (i = 0; i < n - 1; ++i) {
      j = i;
      for (k = i + 1; k < n; ++k) {
         if (a[k] < a[j]) j = k;
         if (j != i) a[j] <--> a[i];
      }
   }
} // select_sort

上述程序的原操作有赋值、比较及交换,显然基本操作应该取比较。总的比较次数显然是:(n-1)+(n-2)+(n-3)+...+1这是一个等差数列之和,要算出求和公式的话可以这样:

(n-1)+(n-2)+(n-3)+......+3+2+1=Sn
1+2+3+......+(n-3)+(n-2)+(n-1)=Sn

上边两个式子加起来2Sn=n+n+n+......+n+n+n(一共n-1个n)所以得出Sn=n(n-1)/2,
Sn=n^2-n/2和n^2成正比,因此选择排序的时间复杂度为O(n^2)。
分享到:
评论

相关推荐

    浅析平面Voronoi图的构造及应用.ppt

    本文档将从多个方面深入浅出地介绍 Voronoi 图的构造及应用,包括 Voronoi 图的定义、构造方法、时间复杂度、 Voronoi 图在信息学中的应用、解决问题的思路等方面。 Voronoi 图的定义 Voronoi 图是一种重要的几何...

    浅析分治法

    这种算法设计模式常用于解决复杂度较高的问题,如排序、查找、计算几何等领域。 标题中的“浅析分治法”意味着我们将探讨分治法的基本概念、原理以及它在实际编程中的应用。在这个博文中,作者可能详细介绍了分治法...

    浅析java 希尔排序(Shell)算法

    至于时间复杂度,希尔排序的最好情况、平均情况和最坏情况的时间复杂度都比简单的插入排序要好,通常估计在O(N^1.5)到O(N^1.3)之间。这是因为较大的间隔允许元素在较早的阶段到达其最终位置,减少了总的比较和交换...

    浅析java快速排序算法

    快速排序的时间复杂度为O(n log n),空间复杂度为O(log n),它是一种非常高效的排序算法。同时,快速排序也可以用来解决其他问题,例如查找数组中的第K小的元素等。 在实际应用中,快速排序可以用于解决许多问题,...

    浅析递归

    3. **效率问题**:由于重复计算和堆栈空间的消耗,递归可能导致较高的时间和空间复杂度,尤其是在没有有效优化的情况下。 **四、递归的应用场景** 1. **数据结构**:在处理树形结构(如二叉树)或图结构时,递归...

    Python用于学习重要算法的模块pygorithm实例浅析

    4. **时间复杂度计算**:模块内嵌了计算时间复杂度的功能,有助于分析算法效率。 ### 安装 pygorithm的安装非常简单,只需要在命令行输入相应的pip命令: - 对于Python 3.x用户,执行`pip3 install pyalgorithm` ...

    关于求最佳比值一类问题的浅析

    此算法的时间复杂度为O(nlogn),能够应对N=30000的情况。 **算法证明** - 当a[i]/a[j] 时,由于数组已排序,a[j+1] &gt;= a[j],所以a[i]/a[j+1] [i]/a[j],这意味着继续移动j没有意义,因为结果只会离e更远。 - 当inc...

    浅析Sybase数据库系统性能调优

    - **ORDER BY**:对于排序操作,合理使用索引可以大幅减少排序的时间复杂度。 - **JOIN操作**:优化连接条件和顺序,尽量减少中间结果集的大小。 - **分组操作**:合理使用GROUP BY语句,减少不必要的计算和...

    浅析C语言递归算法.pdf

    在某些情况下,递归可能导致较高的时间和空间复杂度,因此在实践中需要权衡递归和迭代两种解决方案的优劣。对于能够通过迭代方式简单实现的问题,迭代方法往往更优,因为迭代不涉及额外的函数调用开销。 在实际应用...

    浅析回溯算法

    然而,它的时间复杂度通常较高,因为它需要尝试所有可能的路径。因此,在实际应用中,通常会结合剪枝策略来降低计算量,提高算法的效率。 总的来说,理解并掌握回溯算法是提升编程能力,特别是解决复杂问题能力的...

    2013集训队论文集

    通过分块,可以显著减少算法的时间复杂度和空间复杂度,提高处理效率。分块思想的掌握,对于设计高效算法至关重要。 5. **搜索问题中的meetinthemiddle技巧** - 罗剑桥(北京市第八十中学) meetinthemiddle...

    IOI国家集训队论文集1999-2019

    符文杰 -《排序网络》 何江舟 -《用高斯消元法解线性方程组》 何 林 -《猜想及其应用》 黄 芸 -《POI0110 跳舞蝇》 金 恺 -《浅谈网络流算法的应用》 李澎煦 -《半平面交的算法及其应用》 李 睿 -《二分法与...

    代码之美(中文完整版).pdf

    4.3. 问题:时间,人物,以及对象? 4.4. 大规模尺度的搜索 4.5. 结论 第5章 正确、优美、迅速(按重要性排序):从设计XML验证器中学到的经验 5.1 XML验证器的作用 5.2 问题所在 5.3 版本1:简单的实现 5.4 版本2:...

    simpleANN:ANN的简单Python实现

    这个过程通常涉及数据的降维和量化,以减少计算复杂度。 3. **查询过程**:当查询点到来时,ANN算法会查找与其最接近的数据点。simpleANN可能采用分层查找策略,如在早期阶段排除远距离点,从而减少后续计算。 4. ...

Global site tag (gtag.js) - Google Analytics