+ -
当前位置:首页 → 问答吧 → 全分求助!这个多关键字,每个关键字分别用折半插入排序后,结果很扭曲啊!快考试了啊!我还在编程

全分求助!这个多关键字,每个关键字分别用折半插入排序后,结果很扭曲啊!快考试了啊!我还在编程

时间:2011-12-26

来源:互联网

下面是代码!如果你不想看代码,可以听完描叙。要给记录排序,我想得到的结果是记录由小到大排列,每条记录有5个关键字。关键字1的地位>关键字2的地位>关键字3的地位>关键字4的地位>关键字5的地位。我用折半排序的方法,分别对记录排五次序。

结果的到的排序结果是记录的顺序是关键字1由小到大排列,关键字2由大到小排列。。。。以此类推。
这是为什么?
我想得到的结果是记录由小到大排列
C/C++ code

    //开始进行5趟插入排序
    for (key_index=NUM_OF_KEY-1;key_index>=0;--key_index)
    {
        for (i=2;i<recnum+1;++i)
        {
            r[0]=r[i];
            low=1;high=i-1;
            while (low<=high)
            {
                m=(low+high)/2;
                if (RecArray[r[0]].key[key_index]<=RecArray[r[m]].key[key_index])
                {
                    high=m-1;
                }
                else low=m+1;
            }//while
            for (j=i-1;j>=high+1;--j)
            {
                r[j+1]=r[j];  //记录后移
            }
            r[high+1]=r[0];
        }//for
    }//for

作者: shimachao   发布时间: 2011-12-26

貌似应该先用关键字1排序一遍~
然后再对其中关键字1相同的条目中使用关键字2排序
再对其中关键字2相同的再使用关键字3以此类推
你是每次都对数据按照不同关键字排序了吧?

作者: dyangrun   发布时间: 2011-12-26