我只是想知道这个算法的效率(O(n))是多少:
- 找到满足 a[k] < a[k + 1] 的最大索引 k。如果不存在这样的索引,则排列是最后一个排列。
- 找到最大的索引 l 使得 a[k] < a[l]。由于 k + 1 是这样一个索引,所以 l 是很好定义的并且满足 k < l。
- 将 a[k] 与 a[l] 交换。
- 反转从 a[k + 1] 到最后一个元素 a[n] 的序列。
据我了解,最坏的情况 O(n) = n (当 k 是前一个排列的第一个元素时),最好的情况 O(n) = 1 (当 k 是前一个排列的最后一个元素时)。
我可以说 O(n) = n/2 吗?