【发布时间】:2015-06-12 16:52:41
【问题描述】:
我现在正在修改排序算法。问题来了:
假设这个排序算法是用C写的,把'a'和'A'当作相等,运行这个排序算法后,结果如下:
10000 个随机数据 -> 0.016 秒
100000 个随机数据 -> 0.304 秒
10000 个有序数据 -> 0.006 秒
100000 个有序数据 -> 0.108 秒
10000 个反转数据 -> 0.010 秒
100000 个反转数据 -> 0.138 秒
问题:用点的形式简要说明您可以从上面的测试结果中得出的结论。
我做了什么
我知道这种排序算法是不稳定的(如问题中所述),我猜它是一种快速排序。
我知道快速排序有最坏情况 O(n^2)、平均和最佳情况 O(n log n),但我不知道如何解释结果,我不能只说哦,因为它的不稳定和快速排序在倒序时有不好的结果,所以我可以确定它是快速排序。
我可以从结果中看出什么具体的东西吗?如果结果中有数学计算或其他一些重要的观察结果,那就太好了。
【问题讨论】:
-
“我知道这个排序算法是不稳定的(如问题中所述)”-问题在哪里表明它不稳定?
-
@user2357112 它说它对待'a'和'A'是一样的,所以我认为它不稳定
-
不稳定意味着您正在替换相等的值。稳定的排序算法不会这样做
-
你误解了稳定性的概念。某种稳定性与它认为相等的项目无关。相反,稳定的排序将在输出中保持相等的元素在输出中的相对顺序,就像它们在输入中出现一样。
-
@GiorgiNakeuri 那么,这稳定吗?