我的插入排序方法有问题。它循环遍历自定义结构的元素数组,该结构包含单词和出现次数。数组长度固定为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++;
}
};
由于