ТОП-10 популярных



Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...

НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...

БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...

Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...

ПОД ЛИТЕРОЙ «N»
Aтаку LCD-мониторов не остановить, а масштабы этого наступления даже немного пугают. Судите сами — многие пользователи только начинают приглядываться к новому для...


Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...

Размер объему не помеха.
С тех пор как компания Fujitsu отказалась от производства жестких дисков для настольных компьютеров, многие пользователи начали забывать о том,...


Какую только информацию мы не помещаем на компакт-диски: резервные копии важных данных, музыку, фильмы... Многие полагают, что главное - «купить...

PHP. Сортировка, поиск и случайные числа


17-05-2015

Сортировка и поиск являются двумя фундаментальными концепциями вычислительной науки. Они используются практически в любом приложении, работающем с базой данных, компилятором или даже Internet. Чем больше информации можно получить из Internet, тем важнее становится точное знание о том, где она размещена.
Общеизвестно, что сортировка не является настолько серьезной задачей в контексте PHP, насколько она является таковой для языка программирования C++. PHP имеет несколько очень мощных функций сортировки, одна из которых позволяет определить, каким образом можно сравнить два элемента. В этой главе рассматриваются некоторые классические проблемы вычислительной науки. Изучение этих концепций может представляться интересным при использовании таких обобщенных языков программирования, яркими представителями которых являются языки C и Ada. Но понимание этих концепций позволит понять внутренние механизмы работы баз данных, Web-серверов и даже PHP. Таким образом, вы будете во всеоружии при решении неизбежных проблем, решение которых с помощью встроенных функций PHP не представляется возможным.
Кроме того, в этой главе обсуждаются случайные числа, которые могут помочь в упорядочивании данных. Практическая их реализация применения обычно принимает вид уникальных идентификаторов, характеризующих файлы или сеансы.
21.1. Сортировка
Сортировка предполагает размещение набора значений в определенном порядке. Правила сортировки могут быть достаточно простыми, например сортировка строк по алфавиту. А могут быть и достаточно сложными - сначала отсортировать по названиям стран, затем по названиям штатов и по названиям городов. Процесс сортировки может принимать несколько форм, но всегда включает сравнение двух элементов с применением набора правил упорядочивания. По результату сравнения можно определить расположение двух значений по порядку и по необходимости поменять их местами. 
Существуют три класса сортировок: обмен, вставка и выборка. При применении метода обмена два элемента сравниваются и по мере необходимости меняются местами. Этот процесс продолжается до тех пор, пока не будет достигнут конец списка. Метод вставки предусматривает удаление элементов из одного списка и вставки их в другой. При переносе каждый элемент вставляется в нужное место. После того как будут перенесены все элементы исходного списка, элементы нового списка уже будут располагаться в правильном порядке. Сортировка с выборкой предусматривает просмотр исходного списка на предмет меньшего значения и вставки его в результирующий список. Сортировки вставкой и выборкой являются двумя сторонами одной медали. Если при первом методе сканируется новый список, то во втором - старый.
Как было замечено ранее, алгоритм сортировки заключается в основном в сравнении и возможном перемещении элементов списка. В среднем для всех алгоритмов время, необходимое для перемещения элемента, примерно одно и то же. Справедливо и то, что сравнение не зависит от реальной сортировки. Приняв это за константу, самым важным вопросом становится следующий: сколько раз алгоритм будет выполнять каждое из этих действий?
Конечно, сортировка должна происходить в соответствии с контекстом данных. Одни алгоритмы работают очень хорошо с неупорядоченными данными, но при этом работают очень медленно с упорядоченными. Другие алгоритмы плохо проявляют себя с большим количеством элементов, тогда как третьи потребляют слишком много ресурсов и поэтому неприемлемы при обработке малых объемов данных. Как и любой другой специалист, программист должен сам подбирать рабочий инструмент, соответствующий поставленной задаче.

Понравился материал? Поделитесь с друзьями!



<< Предыдущая статьяСледующая статья >>
PHP. Алгоритмы PHP. Сортировка, поиск и случайные числа. Часть Вторая.