回 帖 发 新 帖 刷新版面

主题:设计一个“二叉”查找算法,将集合分成1/3和2/3大小的两个集合

设计一个“二叉”查找算法,将集合分成1/3和2/3大小的两个集合。

麻烦多加一些中文说明(老是说做法大概是,把一个N个元素的集合,[1/3N],[2/3N],然后又把[1/3N]分成[1/3*1/3N]和2/3*1/3N],把[2/3N]分成[1/3*2/3N]和2/3*2/3N],一直分下去,其中[]表示取整,具体怎么写一个完整的程序我不会,谢谢)

回复列表 (共1个回复)

沙发

感觉题目有点问题,[1/3N]+[2/3N]可能小于N. 比如N=4
而且细分的程度没有明确.

现在假设细分到元素集合小于3,细分点集合长度的1/3 取整.也就是点[1/3N]点

用数组储存所有元素.

void divide(int low, int high)   {
        int point;
        point=[(high-low+1)/3];  //point分割点,取整.
        if ((point-low+1)>3)  divide(low, point); //分割左集合
        if ((high-point+1)>3)  divide(point, high); //分割右集合
}//divide

这是整个分割过程,类似二叉树的遍历递归算法.如果你要搞什么操作,自己可以加lol

我来回复

您尚未登录,请登录后再回复。点此登录或注册