04 2011 档案
摘要:快排是一种不稳定排序, 其最差时间复杂度是 n^2. 但快排是通常排序的最佳实践选择. 因为其平均期望运行时间是 nlog(n).
阅读全文
摘要:#include <iostream> #include <iterator> #include <algorithm> using namespace std ; ostream_iterator output(cout, " ") ; // 关联cout,设置分隔符 copy(vec.begin(), vec.end(), output) ; // 元素拷贝到ostream_iterator所指向的对象cout cout <<endl ; // 别忘了加一个换行
阅读全文
摘要:此算法优秀在最多比较了 3*n / 2 次就完成了任务. 并且将待分析数组分别以奇数和偶数处理, 从而大大降低了分析的难度.
阅读全文
摘要:堆排序为什么美?
记得在 coolshell.cn看到一个文章, 是一个日本人做的排序算法的演示程序, http://coolshell.cn/articles/3933.html, 很是不错, 当你看到堆排序时, 就会被那魔法般的变幻所吸引...
后来仔细思考堆排序, 堆排序为什么美?
堆排序是一个迭代的过程, 每次子排序对于整个带排序的数组是以 2^n 的前进速度进行的, 所以建堆完成后, 排序的时间复杂度是 nlog(n). 面对这个公式我曾经很淡定, 但是当我看到 n > 200 甚至更多的时候, 我变得敏感起来.
什么是优秀, 优秀是在思想上下功夫, 不是用时间来补拙劣.
阅读全文