优化思路
由于内循环中总是给变量t赋同样的值(x[i]的初始值),所以内循环关于t的两条赋值语句移出循环,据说这么做的效率又提高了15%。
优化代码(sort3)
void insertSort(int *array, size_t size)
{
for(size_t i = 1; i < size; i++)
{
int j = i;
int t = array[j];
for(; j > 0 && array[j - 1] > array[j]; j--)
{
array[j] = array[j - 1];
}
array[j] = t;
}
}
《编程珠玑》书中给出了三种排序的运行时间:
插入排序的效率总是O(n2),效率差在比较的次数以及交换的频率,如果交换的频率减少的话就可以大大提高插入排序的效率,这也是为什么元素基本有序时插入排序效率高的原因。
个人观点
代码调优以及性能优化都可能带来一系列的副作用,比如程序的正确性,可读性,可维护性等。是否需要调优要看问题性质,调优既是华而不实的“花活”,也是一把利刃,区别就在于使用的场合。
注:相关教程知识阅读请移步到C++教程频道。











