我有一个程序将文本文件读入结构(members- str author和str title),并为用户提供显示文件中的所有记录,搜索作者或搜索标题的选项。现在我需要将sort函数集成到此过程中,以便当用户按作者或标题搜索时,结果按字母顺序列出。
以下排序功能与我的showAll功能完美配合,但我完全不知道如何修改搜索功能以按字母顺序排列结果。
排序功能代码:
void sortByTitle(int counter){
//variable
int a, b, minIndex;
string temp;
for (a = 0; a < counter; a++){
minIndex = a;
for (b = a + 1; b < counter - 1; b++){
if (books[b].title < books[minIndex].title){
minIndex = b;
}
}
if(minIndex != a) {
temp = books[a].title;
books[a].title = books[minIndex].title;
books[minIndex].title = temp;
cout << books[a].title << endl;
}
}
}
这是我目前的标题搜索功能:
int showBooksByTitle(int counter, string bookTitle){
int recordCount = 0;
//find the user-input string inside bookTitle
for (int a = 0; a < counter; a++){ //loop through the whole file
if (books[a].title.find(bookTitle) != string::npos){
//print a matching record
cout << books[a].title << " " << "(" << books[a].author << endl;
//keep track of the number of matching records
recordCount++;
}
}
return recordCount;
}
我的赋值指定了这些函数头,搜索函数返回找到的记录数,并将数据读入结构(而不是向量)。所以我必须保留这些方面。
如何将选择排序应用于搜索功能,以便我可以按顺序打印记录?
非常感谢任何帮助!
答案 0 :(得分:0)
在这里设置
smallestIndex = index;
然后你检查是否
books[index].title < books[smallestIndex].title
您似乎正在尝试实施选择排序。可以找到一个很好的代码片段here。
Furhtermore: