之前在网上看到的利用哨兵节点提高插入排序性能的算法都是错误的,直接上源码(C/C++)
// 插入排序
void insert_sort(int *a, const int left, const int right)
{
int i, j, temp;
for (i = left + 1; i <= right; ++i)
{
// 将a[left]作为哨兵
temp = a[left];
a[left] = a[i];
for (j = i - 1; a[j] > a[left]; --j)
{
a[j + 1] = a[j];
}
// 最左侧的元素(temp)还没有比较
if (temp >= a[left])
{
a[j + 1] = temp;
}
else
{
a[j + 1] = a[left];
a[left] = temp;
}
}
}
欢迎大家骚扰指点