我已經做了一些代碼,嘗試按年份,名稱或投票排序我的電影列表,但是當我運行該應用程序時,它沒有排序。只是想知道我哪裏錯了。我相信這可能與電影電影有關。C++氣泡排序和比較
更新:我已經有些固定它,現在它是排序列表中的前10個或20個項目,但不會休息排序。我已經檢查了cout,如果我的循環有任何問題,它似乎從0-248罰款。
enum MovieSortOrder
{
BY_YEAR = 0,
BY_NAME = 1,
BY_VOTES = 2
};
int Movie::CompareByVotes(Movie m) {
if (m.get_votes() == this->get_votes()) {
return 0;
} else if (m.get_votes() > this->get_votes()) {
return 1;
} else {
return -1;
}
}
int Movie::CompareByYear(Movie m) {
if (m.get_year() == this->get_year()) {
return 0;
} else if (m.get_year() > this->get_year()) {
return 1;
} else {
return -1;
}
}
int Movie::CompareByName(Movie m) {
string a = m.get_name();
string b = this->get_name();
if (a[0] = b[0]) {
return 0;
} else if (a[0] > b[0]) {
return 1;
} else if (a[0] < b[0]) {
return -1;
}
}
int Movie::CompareTo(Movie m, MovieSortOrder n) {
if (n == 0) {
return CompareByYear(m);
} else if (n == 1) {
return CompareByName(m);
} else if (n == 2) {
return CompareByVotes(m);
}
}
bool MovieList::MoveLargestToEnd(MovieSortOrder n) {
bool changed = false;
for (int i = 0; i < last_movie_index; i++) {
//cout << i << endl;
if (movies->CompareTo(movies[i], n) > movies->CompareTo(movies[i + 1], n)) {
swap(movies[i], movies[i + 1]);
changed = true;
}
}
return changed;
}
void MovieList::BubbleSort(MovieSortOrder n) {
for (int i = 0; i < last_movie_index; i++) {
if (!MoveLargestToEnd(n)) {
return;
}
}
}
噢,謝謝。我一整天都在做這個,所以我的大腦有點油炸。問題是我的清單只是不排序。無論我按照年份,名稱還是選票進行排序,都不會發生任何事情。 – andayn 2014-12-06 03:47:01