分块查找
while (low <= high)
{
mid = (low + high) / 2;
if (index[mid].key >= key)//有等于号,因为low,high相等时若使得low+1,则会在low+1处查找,而实际应该在mid处查找。因为low+1对象内的最小关键字会比mid处的值大。
high = mid - 1;
else
low = mid + 1;
}
i = index[high + 1].low;
折半插入
while (low <= high)
{
m = (low + high) / 2;
if (r[m] > temp)//折半插入排序是稳定的,所以low,high相等时,r[m]=temp,temp应该插入到r[m]之后,若high-1,则会使得temp插入到r[m]之前
high = m - 1;
else
low = m + 1;
}
分析:只需比较记忆这两个即可,其他算法无此类比较
本文深入探讨了分块查找与折半插入两种算法的实现细节,通过具体代码展示了如何进行有效的数据查找与排序。理解这两种算法的比较逻辑对于提高数据处理效率至关重要。
1373

被折叠的 条评论
为什么被折叠?



