+ sort() 使用数组存储数据,排序之后取中间的数值,由于排序需要O(NlogN),这也是整个算法的时间复杂度
vector + nth_element() 使用标准库中的 nth_element...如果确实需要输出一些中间文件,可考虑将纯文本转成二进制,或采用序列化/反序列化方案来降低数据量
考虑异步/多线程读写....使用查询表而非临时计算,有时候可以作为降维打击了
循环
将判断外提
合并多个循环
展开. 如 k * 1 展开, k * k 展开(引入k个临时变量)
哨兵值....如在数组中查找某个值,则每次循环都需要检查数组是否越界,那么在数组末尾添加想要查找的值,则无需判断越界问题,因为肯定会返回,当然最后需要对结果所在的索引位置进行额外的判断
削减强度....如果可以提前知道数据的长度,可使用 reserve/resize 提前预留内存
传值 vs 传引用. 函数调用时,如果传值,则会发生内存拷贝
警惕内存泄漏
内存复用.