#c #arrays #class #sorting #object
Вопрос:
У меня настроен класс Movie, и я пытаюсь создать функцию для сортировки массива фильмов по дате выпуска, а затем по рейтингу. У меня есть 7 фильмов в текстовом документе, которые хранятся в моем массиве, и функции получения готовы, но у меня возникают проблемы с преобразованием того немногого, что я знаю о сортировке массива целых чисел, в массив, где мне нужно сортировать строки, а затем удваивать.
Вот мой код:
string Movie::getReleaseDate() {
return releaseDate;
}
double Movie::getRating() {
return rating;
}
void sortByDateRating(Movie movies[], int SIZE) {
int i;
int j;
int temp;
for (i = 1; i < SIZE; i) {
j = i;
while (j > 0 amp;amp; movies[j] < movies[j - 1]) {
temp = movies[j];
movies[j] = movies[j - 1];
movies[j - 1] = temp;
--j;
}
}
}
Я планирую вызвать эту функцию из случая переключения, который у меня есть в main. Заранее спасибо.
Комментарии:
1. Ваш код сортировки больше похож на сортировку пузырьками, чем на сортировку вставкой. Сортировка вставки начинается с начала и ищет подходящее место для вставки. Все элементы сдвигаются вниз на единицу (чтобы освободить место для новых данных), затем данные вставляются в массив. Ваш код этого не делает.
2. Похоже, в описании Википедии также используется замена. Возможно, мое определение неверно.
Ответ №1:
Если вы действительно не хотите реализовать сортировку самостоятельно, вы можете использовать STL-контейнер std::map или эквивалентный контейнер из Boost .
Комментарии:
1. Или просто
std::sort
массив…2. Я бы предпочел отсортировать это сам, но спасибо