neverland199109 发表于 2015-8-25 15:32:43

函数没有明白进行了什么数学过程,希望大神解答

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;
}
请问整个函数进行了什么数学运算?

仰望天上的光 发表于 2015-8-25 15:32:44

调用前提:数组xx已经是按照从小到大排序过的。
该函数寻找数组xx中<=参数x的元素个数(因为已经排序过,也可以认为定位x在数组中的大小位置)

最后说下,这个函数写的爆弱了。。。
首先,参数j根本没用
其次,这个成员函数应该用const修饰
再次,变量名能写得再乱点吗?
最后,函数名能不能用BinarySearch?这样内行人就知道你要干什么了、

melttt 发表于 2015-8-25 18:47:46

能不能贴出完整的代码

neverland199109 发表于 2015-8-25 18:55:52

melttt 发表于 2015-8-25 18:47
能不能贴出完整的代码

源代码太长了

melttt 发表于 2015-8-25 22:22:17

neverland199109 发表于 2015-8-25 18:55
源代码太长了

你用上面那个插入代码选项试试或者发一份文本文件

yjip267 发表于 2015-8-26 10:49:25

在 写函数时。最好也函数名与功能联系上。参数也要标明用法。这样就不用写注释别人也给看明白。如果 你不太明白。可以调试一下。

430524tian 发表于 2015-8-26 14:21:31

这代码写得不是很清楚,变量名不明白是什么意思。建议用printf()调试.

狼之道 发表于 2015-8-28 13:15:06

感觉好复杂,你试试跟着调试多走几遍

Ray-allen 发表于 2015-9-2 15:44:53

感觉逻辑很混乱,写的时候最好在必要的部分写上注释

Gordonzf 发表于 2015-9-15 14:04:33

print调吧

冰封丶茶 发表于 2015-9-17 13:53:32

应该是二分查找

东河 发表于 2015-9-20 19:13:47

我就看看

特殊符号 发表于 2015-9-21 09:56:18

应该是二分查找吧

战w9diwdo 发表于 2015-9-29 14:11:25

看完之后惊起我一身冷汗,看来以后一定要好好写注释,多打空格和回车。
这也太难看了

嘎嘎豆芽 发表于 2015-10-6 19:58:43

还是得注释一下
页: [1]
查看完整版本: 函数没有明白进行了什么数学过程,希望大神解答