c - 算法复杂度计算

标签 c arrays algorithm sorting

我开始学习如何用 c 语言编写代码。 目前,我正在尝试实现一个程序来显示类似于这样的输出:

{ 欢迎使用 CSE 分拣系统


请输入数组大小:
请选择以下排序算法之一:
1 - 冒泡排序
2 - 插入排序
3 - 选择排序
4 - 快速排序
您的选择:

您的数组已按 x 步使用选择排序进行排序。

排序后的数组:

我的程序已基本完成,但我无法确定如何计算排序过程中使用的 x 步数。如何推断算法使用的“步骤”数?

最佳答案

程序的复杂度不能通过简单地统计每个程序执行的指令总数来比较。您需要渐近分析、摊销分析等来分析算法的复杂性。在渐近分析中,分析了算法的限制行为

限制行为仅对n ≥ n0有效。快速排序的渐近 Big-O 复杂度为 O(n log n),小于冒泡排序的复杂度 O(n2).但是对于 n < n0 的任意值,即使在一般情况下,冒泡排序也可能比快速排序执行得更好。因此,您计算比较程序执行的指令总数的方法可能不会产生正确的结果。

关于c - 算法复杂度计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19532816/

相关文章:

c - 内存泄漏调试

java - 如何判断读取结束

ios - 动态选择 UIPicker 行

javascript - 在 JavaScript 中创建时间点数组

c++ - 根据 std::sort() 实现 qsort()

java - Strategy Pattern with strategies 包含相似的代码

c - 当格式说明符不匹配时,为什么会收到不同变量的值?

c - 通过 *headRef 链表和删除节点

c - 如何使用结构成员打印星期几?

algorithm - 在图 G 中找到最大权重边?