首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

!关于一个二分插入排序的有关问题。

2013-12-15 
高手请进!关于一个二分插入排序的问题。。我是个新手,我在做一个二分插入排序,代码如下:public void binaryS

高手请进!关于一个二分插入排序的问题。。
我是个新手,我在做一个二分插入排序,代码如下:
public void binarySort(FileInfo fileInfo, int beginIndex, int endIndex) {
int midIndex = (beginIndex + endIndex) / 2;
float nowLength = fileInfo.getSize();
float midLength = bigFiles.get(midIndex).getSize();
float beginLength = bigFiles.get(beginIndex).getSize();
float endLength = bigFiles.get(endIndex).getSize();
if (nowLength > beginLength) {
bigFiles.add(0, fileInfo);
} else if (nowLength < endLength) {
bigFiles.add(fileInfo);
} else if (nowLength > midLength) {
binarySort(fileInfo, beginIndex, midIndex - 1);
} else if (nowLength < midLength) {
binarySort(fileInfo, midIndex + 1, endIndex);
} else {
bigFiles.add(midIndex, fileInfo);
}
}
bigFiles里面有数据,但是就是排序不对。不知道为什么?帮忙看下啊
[解决办法]
不知道你要怎么排序,但是你的排序明显有问题,我写了个按照fileInfo的size升序插入的代码
 public?void?binarySort(FileInfo?fileInfo,?int?beginIndex,?int?endIndex)?{
    int?midIndex?=?(beginIndex?+?endIndex)?/?2;
    float?nowLength?=?fileInfo.getSize();
    float?midLength?=?bigFiles.get(midIndex).getSize();
    float?beginLength?=?bigFiles.get(beginIndex).getSize();
    float?endLength?=?bigFiles.get(endIndex).getSize();
    if?(nowLength?<?beginLength)?{
    bigFiles.add((beginIndex-1)>0?(beginIndex-1):0,?fileInfo);
    }?else?if?(nowLength?>=?endLength)?{
    bigFiles.add(fileInfo);
    }?else?if?(nowLength?>=?midLength)?{
    binarySort(fileInfo,?midIndex+1,?endIndex);
    }?else{
    binarySort(fileInfo,?beginIndex,?midIndex-1);
    }
    }

热点排行