Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Сортировка ассоциативного массива
Покинул форум
Сообщений всего: 2
Дата рег-ции: Сент. 2017
Помог: 0 раз(а)
Доброго дня!
На собеседовании столкнулся с заданием: сортировка ассоциативного массива, содержащего вложенный массив, по одному из элементов из вложенного массива, не используя функций сортировки.
Отсортировать массив требовалось по возрастанию элемента "Param".
Честно говоря, интуитивно, мне такой способ сортировки кажется немного "кривоватым". Отсюда такой вопрос: какими еще способами можно отстортировать ассоциативный массив, разумеется не используя готовых функций?
Строитель
Отправлено: 24 Сентября, 2017 - 19:57:43
Участник
Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014 Откуда: Украина
Помог: 73 раз(а)
Daxe_rag, у вас ведь на выходе данные не верны.
Bio man
Отправлено: 24 Сентября, 2017 - 20:05:11
Постоянный участник
Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010 Откуда: Даугавпилс, Латвия
Помог: 52 раз(а)
Откопал в лабараторках оптимизированный пузырьковый метод и переписал на PHP
Если интересно, могу скинуть все сортировщики написанные на C++ (можно скомпилить в VS2015), там есть
Quick Sort, Selection Sort, и множество алгоритмов сортировки Шелла.
К тому-же пргграммка делает замеры эффективности по времени, и количество перестановок и сравнений.
Строитель
Отправлено: 24 Сентября, 2017 - 20:12:35
Участник
Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014 Откуда: Украина
Покинул форум
Сообщений всего: 2
Дата рег-ции: Сент. 2017
Помог: 0 раз(а)
[quote=Строитель]Daxe_rag
У вас получается не совсем правильно. Если сортировать массив из моего примера, то он отсортируется корректно, но если заменить, например, последнее значение "param" на 4, то есть меньше максимального, записанного в $values, но больше первого элемента, то функция запишет этот ключ как первый. (Добавление)
Спасибо за ответы. Если кому-то вдруг понадобится, вот рабочий код сортировки:
Вышеприведенный код может работать медленно, так как размер массива вычисляется в каждой итерации. Поскольку размер не меняется, цикл может быть легко оптимизирован с помощью промежуточной переменной, в которую будет записан размер массива, вместо повторяющихся вызовов функции count():
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.