【发布时间】:2013-11-01 04:56:09
【问题描述】:
我开始学习如何用 c 编写代码。 目前,我正在尝试实现一个程序,该程序将显示类似于此的输出:
{ 欢迎使用 CSE 分拣系统
请输入您的数组大小:
请选择以下排序算法之一:
1 - 冒泡排序
2 - 插入排序
3 - 选择排序
4 - 快速排序
您的选择:
您的数组已使用选择排序进行了 x 步排序。
排序后的数组:}
我的程序已基本完成,但我无法确定如何计算排序过程中使用的 x 步数。如何推断算法使用的“步数”?
【问题讨论】:
-
计算你用每种算法做了多少次交换?
-
@GWW,对,但是交换的数量不取决于将数字输入数组的顺序吗?即,如果它们按升序输入,将进行 0 次交换。
-
@keyhammer:是的,没错。 (至少,对于冒泡排序。其他的工作方式不同。)这就是为什么我们通常讨论排序算法的“最坏情况复杂度”,这是用于 any 输入的最大步数给定长度。
-
@ruakh 交换不是排序的主要因素; 比较是。
-
@WhozCraig 因此,如果比较是主要因素,那么只要数组大小不变,每个排序步长是否会保持不变,而与输入元素的顺序无关?
标签: c arrays algorithm sorting