62,623
社区成员
发帖
与我相关
我的任务
分享 public int inPos(long insertKey) // insertKey为要插入的数字
{
int lowerBound = 0; // 定义数组a的上界
int upperBound = nElems - 1; /* 定义数组a的下界,nElems为数组a中有效(不为0)元素总个数 */
int curIn; // 查找光标停留在数组a[]中的当前位置
// 开始查找
while (true) {
curIn = (lowerBound + upperBound) / 2; // 二分查找
if (curIn <= lowerBound) {
return lowerBound>0?lowerBound-1:0;
} else if (curIn >= upperBound) {
return upperBound;
} else {
if (a[curIn] > insertKey) {
if (a[curIn - 1] <= insertKey)
return curIn;
else
upperBound = curIn;
} else {
if (a[curIn + 1] > insertKey)
return (curIn + 1);
else
lowerBound = curIn;
}
}
}
}