函数没有明白进行了什么数学过程,希望大神解答
int CProcessFunction::locate(double *xx,int n,double x,int j){
int jl,ju,jm,is=1;
jl = is-1;
ju = n;
if(xx <= x)
{
j = n;
return j;
}
while(ju-jl > 1)
{
jm = (ju+jl)/2;//中值
if(((xx > xx) && (x > xx)) || ((xx <= xx) && (x <= xx)))
jl = jm;
else
ju = jm;
}
j = jl;
return j;
}
请问整个函数进行了什么数学运算? 调用前提:数组xx已经是按照从小到大排序过的。
该函数寻找数组xx中<=参数x的元素个数(因为已经排序过,也可以认为定位x在数组中的大小位置)
最后说下,这个函数写的爆弱了。。。
首先,参数j根本没用
其次,这个成员函数应该用const修饰
再次,变量名能写得再乱点吗?
最后,函数名能不能用BinarySearch?这样内行人就知道你要干什么了、 能不能贴出完整的代码 melttt 发表于 2015-8-25 18:47
能不能贴出完整的代码
源代码太长了 neverland199109 发表于 2015-8-25 18:55
源代码太长了
你用上面那个插入代码选项试试或者发一份文本文件 在 写函数时。最好也函数名与功能联系上。参数也要标明用法。这样就不用写注释别人也给看明白。如果 你不太明白。可以调试一下。 这代码写得不是很清楚,变量名不明白是什么意思。建议用printf()调试. 感觉好复杂,你试试跟着调试多走几遍 感觉逻辑很混乱,写的时候最好在必要的部分写上注释
print调吧 应该是二分查找 我就看看 应该是二分查找吧 看完之后惊起我一身冷汗,看来以后一定要好好写注释,多打空格和回车。
这也太难看了 还是得注释一下
页:
[1]