摘要:稳定:如果 a 原本在 b 前面,而 a = b,排序之后 a 仍然在 b 前面。 不稳定:如果 a 原本在 b 前面,而 a = b,排序之后 a 可能会出现在 b 后面。 各种算法的性能比较:
阅读全文
摘要:用clock函数,库<ctime>。 记录时间的数据类型为clock_t。 1 int main() 2 { 3 clock_t start, end; 4 start = clock(); // 计时开始 5 6 vector<int> ar; 7 for (int i = 30; i >= 0;
阅读全文
摘要:插入排序的小优化,算法性能不稳定,其时间复杂度Ω(nlgn) - O(n^2)。 但这原理咋就折磨难理解内。 希尔排序采用“分组”的思想,按照区间的步长将数组分为不同的组。举个例子,按步长3将区间分组,其序号分别为3n,3n+1,3n+2。(n从0开始)然后在每一个组里都使用插入排序,称其为一趟操作
阅读全文
摘要:在《算法导论》一书中,插入排序作为一个例子是第一个出现在该书中的算法。 插入排序: 对于少量元素的排序,它是一个有效的算法。 插入排序的工作方式像许多人排序一手扑克牌。开始时,我们手中牌为空,我们每次从牌堆中取出一张牌并将其放入正确的位置。为了找到一张牌的正确位置,我们从左到右将它与手中已有的每张牌
阅读全文
摘要:各种语句和模块分析应遵循的规则: (1)赋值语句和读写语句:运行时间取 O(1)。有函数调用的除外,此时要考虑函数的执行时间。 (2)顺序执行语句:运行时间有加法规则确定,即该序列中耗时最多的语句的执行时间。 (3)条件分支语句:运行时间有条件测试(通常为 O(1))加上分支中运行时间最长的语句的运
阅读全文