在C ++中删除重复项时插入排序

时间:2014-10-08 23:57:05

标签: c++ arrays sorting insertion-sort

我的插入排序方法有问题。它循环遍历自定义结构的元素数组,该结构包含单词和出现次数。数组长度固定为1000.排序会删除重复项。它认为问题是在找到duplcate但是我使用相同的函数进行排序交换时的交换。我玩了一段时间,我似乎可以让它工作。

我的程序使用长度变量输出整个列表并输出以下内容:

word occurences

hello 500

hello 500

我知道数组中包含1000个单词hello,所以这个输出如果让我感到困惑。

void sortAndRemoveDuplicates(Word WordArray [],int &length){
    /*  Description:    Sort the word array, removing duplicates                 */
    for(int index=0;index<length-1;index++){
        int idxMin=index;
        for(int idx=index;idx<length;idx++){


            if(WordArray[idx].word<WordArray[idxMin].word){
                    idxMin=idx;
                }
        }
        // if duplicate
        if(WordArray[idxMin].word==WordArray[index-1].word){
                WordArray[index-1].wordCount++;
                swap(WordArray[idxMin],WordArray[index]);
                length--;
                index--;

            }

        if(idxMin!=index){
            swap(WordArray[idxMin],WordArray[index]);
        }
    }
};

void swap(Word &x, Word &y){
/*  Description:    Swap two words                                 */
    Word temp;
    temp=x;
    x=y;
    y=temp;

};

void printResults (string &filename, int &charCount, int &lineCount, int wordCount, Word WordArray[],int &length){
/*  Description:    Print the results of the program to cout        */
    cout<<"\tResults\n";
    cout<<"Filename: "<<filename<<"\n";
    cout<<"Character Count: "<<charCount<<"\n";
    cout<<"Line Count: "<<lineCount<<"\n";
    cout<<"Word Count:"<<wordCount<<"\n";
    cout<<"\tWord\tCount\n";
    int i=0;
    while(i<(length)){
        cout<<"\t";
        cout<<WordArray[i].word<<"\t"<<WordArray[i].wordCount<<"\n";
        i++;
    }



};

由于

0 个答案:

没有答案