Дорожная карта
Ваш первый алгоритм сортировки
Я думаю, что сортировка по подсчетам - лучший алгоритм для начала. Прочтите об этом и попытайтесь понять, а затем напишите свою собственную реализацию следующим образом:
- Генерация 1000 случайных чисел в диапазоне от 0,9 (используйте
java.util.Random
для заполнения int[]
)
- Сортируйте их, используя сортировку подсчета.
Как только вы это сделаете, вы поймете, насколько простой может быть сортировка, когда вы можете воспользоваться определенными свойствами чисел (в данном случае, фактом, что они находятся между 0..9).
Ваш второй алгоритм сортировки
Сортировка выбора - это хороший интуитивно понятный алгоритм сортировки для вашей следующей реализации. Это сортировка сравнения, и она не предполагает ничего о диапазоне чисел. Многие люди в реальной жизни сортируют, используя этот алгоритм:
- Учитывая некоторый выбор, мы ищем лучшее и выбираем его первым.
- Теперь лучшее вышло, поэтому мы ищем второе лучшее из остальных.
- Тогда мы ищем третий лучший ... и т.д.
Остальная часть пути
Возможно, вы захотите реализовать другие квадратичные алгоритмы просто для того, чтобы хорошо разбираться в основах, но следующим шагом будет изучение рекурсии, в частности алгоритмов разделения и завоевания.
Вы не захотите погружаться прямо в сортировку слиянием / быструю сортировку, не разбираясь в базовых принципах рекурсии, потому что это может быть слишком подавляющим.
Выполняйте обычные рекурсивные упражнения, факториал, Фибоначчи и т. Д. Попросите указатели из stackoverflow, если вам нужно руководство. Возможно, уже есть вопросы с хорошими ответами об обучении рекурсии.
Боковой проезд
Возможно, вы захотите внедрить часть слияния сортировки слиянием, даже до того, как полностью поймете рекурсию. Это очень познавательное упражнение:
- Учитывая отсортированный массив чисел A и отсортированный массив чисел B, объедините два в один отсортированный массив
- Воспользуйтесь тем, что A и B уже отсортированы