Как использовать сортировку вставки в массиве объектов?

#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. Я бы предпочел отсортировать это сам, но спасибо