我开始学习如何用c语言编写代码。目前,我正在尝试实现一个程序,该程序将显示类似于以下内容的输出:
{欢迎使用CSE分拣系统
请输入您的大小数组:
请选择下列排序算法之一:
1-气泡分类
2-插入排序
3-选择排序
4-快速排序
你的选择:
您的数组已在x步骤中使用选择排序进行排序。
排序后的数组:}
我的程序基本上已经完成,但我在确定如何计算排序过程中使用的x步数时遇到了困难。如何推断算法使用的“步骤”的数目?
发布于 2013-10-23 04:58:27
这听起来是一个有趣的,但有点挑战性的问题来解决。“步骤”本身是相当抽象的。
假设我有一些任意的排序函数:
void lameSort(int* array, int length) {
int i;
for (i = 0; i < length; ++i) {
if (array[i] == 5) {
int tmp = array[i];
array[i] = array[i - 1];
array[i - 1] = tmp;
}
}
}你到底会把“步骤”定义为什么?你可以说
你将不得不以某种方式对这些“步骤”进行计数。
而且,人们通常不会用精确的步骤来衡量算法的复杂性。它们用大-O表示法来表示运行时间/存储复杂度,最高阶多项式是运行时间。
发布于 2013-10-23 05:47:45
对于复杂性注释,go 这里
对于复杂性计算示例,请参见这里
这两门课都是用一种简单易懂的语言来解释的。
https://stackoverflow.com/questions/19532816
复制相似问题