Что такое простейшая реализация Pigeonhole Сортировка в Java? Массив массивов-списков идеален, но Java делает это трудным, если вы хотите оставаться безопасным по типу. Можно использовать массив массивов или массив-список списков массивов, но они несколько неудобны. Мне было интересно, была ли общая рекомендация относительно того, какая структура данных лучше.Реализация Pigeonhole Сортировать по Java
ответ
Прежде всего, если вы хотите достичь теоретической вычислительной сложности сортировки свиноматок, вы должны использовать LinkedList<T>
, а не ArrayList<T>
. Многие люди забывают, что амортизированная стоимость вставки в ArrayList<T>
составляет O (log n) с n количество элементов в списке.
Как вы заметили, существует проблема с созданием массива общего (-зависимого) типа. Но вы можете обойти это, используя this answer.
Так сказать n
этому количество ключей и f
является функцией вычисления ключевых (карт на целое число между 0
и n-1
(включительно)), на котором мы хотим разобраться, то (сортировка рядного) алгоритма в Java 8 (с функциональным программированием) выглядит следующим образом:
public static<T> void pigeonholeSort (T[] tosort, Function<T,Integer> f, int n) {
LinkedList<T>[] holes = (LinkedList<T>[]) new LinkedList[n];
for(int i = 0; i < n; i++) {
holes[i] = new LinkedList<T>();
}
for(T t : tosort) {
holes[f.apply(t)].add(t);
}
for(int i = 0, j = 0; i < n; i++) {
for(T t : holes[i]) {
tosort[j++] = t;
}
}
}
Вы можете запустить этот код, например, с:
String[] toSort = new String[] {"Foo","Bar","Baz","Fubar","Qux"};
pigeonholeSort(toSort,x -> (Integer) (x.charAt(0)-'A'),26);
System.out.println(Arrays.toString(toSort));
(при условии, что вы используете только строки, начинающиеся с буквы в верхнем регистре).
- 1. java - сортировать по возрастанию
- 2. Merge Проверка Сортировать Реализация
- 3. Java Mysql Сортировать по цене
- 4. Bidirectionnal Bubble Сортировать по Java?
- 5. Java. 2d сортировать по столбцу
- 6. Java Array Сортировать по убыванию?
- 7. Невозможно запустить Merge Сортировать по Java
- 8. это реализация слияния сортировать хорошо?
- 9. Фильтрация почты через функцию Sieve/Pigeonhole
- 10. Фильтр отправил сообщение с Postfix Pigeonhole
- 11. Java-компаратор, как сортировать по целому числу?
- 12. java сортировать список объектов по атрибуту
- 13. Java Bubble сортировать по рандомизированному ListArray
- 14. Java объекта сортировать по типу списку недвижимости
- 15. Java HashMap сортировать по значению, тогда ключ
- 16. Java Дженерик: Сортировать Карта по значению
- 17. Java Set - как сортировать по перечню имен
- 18. сортировать вывод по сумме в java
- 19. Realm Java Сортировать по RealmList Ссылка
- 20. Сортировать по длине пути в Java
- 21. Oracle и Java динамический «Сортировать по» п
- 22. сортировать массив объектов по фамилии java
- 23. Сортировать по: По умолчанию
- 24. Список Сортировать по Номер
- 25. Реализация сопоставимых java
- 26. Реализация стандартного списка Java по умолчанию?
- 27. Java-реализация чисел Бернулли по новому методу
- 28. java сортировать список по текущей дате затем по дате сравнению
- 29. Bubble сортировать по темам
- 30. C++ сортировать элементы по атрибутам
Я бы использовал 'LinkedList', поскольку он выполняет вставку в * O (1) *, тогда как амортизированная стоимость 'ArrayList ' вставка равна * O (log n) * –