普通情况,基本情况和边缘情况之间有什么区别?

时间:2019-03-07 11:44:44

标签: algorithm terminology

在谈论算法时,我经常遇到这些术语。

特殊情况

基本案例

边缘保护套

它们都一样吗?或两者之间有什么显着差异?

2 个答案:

答案 0 :(得分:2)

“平凡的情况”是一种简单的有限算法仍然可以解决的情况。例如,在您需要对数字列表进行排序但已经对其进行排序的情况下。

通常与递归有关使用“基本案例”,它是指直接处理而没有任何进一步递归的案例。例如,快速排序单个元素。 (基本情况通常也很少。)

“边缘情况”是在某种程度上不常见的情况,无法通过适用于大多数情况的逻辑来正确处理,或者导致特别糟糕的性能或结果。例如,对所有元素都相等的数组进行快速排序,就不可能选择有效的枢轴。

答案 1 :(得分:1)

下面我们讨论一下阶乘算法

factorial (n) = n * factorial (n - 1) if n > 0
              = 1 if n is 0
              = error if n < 1

小写情况:如果算法是理智的,简单的情况应该通过。 (类似于烟雾测试)通常可以在头脑中或用笔和纸计算出来。示例factorial(3)或factorial(5)
基本情况:算法收敛到的递归终止条件。在这种情况下,n为0。
边缘情况:由于语言限制(变量溢出,被零除等)而算法可能给出错误答案的情况,或者期望算法温和地报告错误而不是崩溃的情况。