@kvendingoldo

Устойчивость сортировки. Как отсортировать массив по разным полям?

Привет всем! Столкнулся с проблемой : нужно отсортировать массив фамилии и имён по алфавиту(при совпадении имен сортировать по фамилии). Загвоздка в том,что нужно это сделать сортировкой Шелла, а она, вроде, не устойчивая. Подскажите, как быть?
Сама сортировка у меня такая:
template <typename T, typename Cmp>
void shellSort( vector<T> &arr, Cmp const &cmp )
    {
 	int size=arr.size();
    int step = size / 2;// шаг.
    while (step > 0)
    {
      for (int i = 0; i < (size - step); i++)
                {
                    int j = i;
                    while (j >= 0 && cmp(arr[j], arr[j + step]))
                    {
                        T temp = arr[j];
                        arr[j] = arr[j + step];
                        arr[j + step] = temp;
                        j--;
                    }
                }
                step = step / 2;
            }   
    }
  • Вопрос задан
  • 2352 просмотра
Пригласить эксперта
Ответы на вопрос 1
gbg
@gbg Куратор тега C++
Любые ответы на любые вопросы
Рассматривайте имя/фамилию как единый ключ сравнения (одну строку символов).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы