Как сохранить данные в паре вместе в сортировке вставки - PullRequest
0 голосов
/ 11 апреля 2020

Я работал с данными из файла и держал их в паре вместе. Мне нужно отсортировать данные в алфавитном порядке, сохраняя их в паре одновременно. Я успешно сделал это с пузырьковой сортировкой здесь:

     for (int i = 1; i <= count; i++)
     {
         for (int j = 0; j < count - 1; j++)
         {
             if (email [j].compareToIgnoreCase (email [j + 1]) > 0)
             {
                 temp1 = email [j];
                 email [j] = email [j + 1];
                 email [j + 1] = temp1;

                 temp2 = fname [j];
                 fname [j] = fname [j + 1];
                 fname [j + 1] = temp2;

                 temp3 = lname [j];
                 lname [j] = lname [j + 1];
                 lname [j + 1] = temp3;

                 temp4 = city [j];
                 city [j] = city [j + 1];
                 city [j + 1] = temp4;

                 temp5 = age [j];
                 age [j] = age [j + 1];
                 age [j + 1] = temp5;
             }
         }
     }
}

Я получаю вывод, подобный этому: Электронная почта: bobbarley@gmail.com Имя: Боб Фамилия: Ячмень Город: Ванкувер Возраст: 13 Электронная почта: felixfixed@gmail.com Имя: Феликс Фамилия: Фиксированный Город: Бостон Возраст: 24 Электронная почта: joejake@gmail.com Имя: Джо Фамилия: Джейк Город: Торонто Возраст: 32

С другой стороны, у меня есть вставка сортировки, но Я не могу хранить данные вместе. Вот мой код:

for (int i = 1; i < count; i++)
    {
        String current = fname [i];
        int j = i - 1;

        while (j >= 0 && current.compareToIgnoreCase (fname [j]) < 0)
        {
            fname [j + 1] = fname [j];
            j--;
        }
        fname [j + 1] = current;
    }

С этой частью я получаю следующий вывод:

Имя: Боб Фамилия: Джейк Город: Торонто Возраст: 32 Электронная почта: joejake@gmail.com Имя : Феликс Фамилия: Барли Город: Ванкувер Возраст: 13 Электронная почта: bobbarley@gmail.com Имя: Джо Фамилия: Фиксированный Город: Бостон Возраст: 24 Электронная почта: felixfixed@gmail.com

1 Ответ

0 голосов
/ 11 апреля 2020

Вы выполняете упорядочение по пузырьковому сравнению по почте, а затем по другим полям, но вставка сравнивает только название, почему? возможно, вам не следует сравнивать вставку с другими, чтобы она была заказана

{for (int i = 1; i < count; i++)
    String current = fname [i];
    int j = i - 1;

    while ((j >= 0 && current.compareToIgnoreCase (fname [j]) < 0) and j>=0 && current.compareToIgnoreCase (email[j]....)
    {
        fname [j + 1] = fname [j];
        j--;
    }
    fname [j + 1] = current;
}
...