Большой архив статей, книг, документации по программированию, вебдизайну, компьютерной графике, сетям, операционным системам и многому другому
 
<Добавить в Избранное>    <Сделать стартовой>    <Реклама на сайте>    <Контакты>
  Главная Документация Программы Обои   Экспорт RSS E-Books
 
 

   Программирование -> Delphi / Pascal -> Структуры и базы данных, методы сортировки


Сортировка выбором

    Сортировка выбором ( прямой выбор,линейный выбор )

Согласно этому методу,начиная с первой записи таблицы, осуществляется поиск элемента,имеющего наименьшее значение ключа. После    того, как этот элемент найден, он меняется местами с первой записью в таблице. В результате такой перестановки запись с наименьшим значением ключа помещается в первую позицию в таблице. Затем, начиная со второго элемента таблицы, осуществляется поиск второго наименьшего ключа. Найденный элемент меняется местами со вторым элементом таблицы. Этот процесс продолжается до тех пор, пока все записи не будут расположены в порядке возрастания кодов ключа. Число сравнений в данном методе равно n(n-1)/2 (в среднем порядка n**2),где n - количество записей в таблице. Максимальное количество перестановок при такой сортировке равно (n-1). В качестве примера рассмотрим шаги алгоритма для таблицы со следующими значениями ключей:

23    11     4     56     9     35    7

Таблица на различных этапах упорядочения (подчеркнуты перемещаемые элементы) :

23    11     4     56     9     35    7
~~~        ~~~
4     11     23    56     9     35    7
      ~~~                                 ~~~
4      7     23     56     9     35    11
             ~~~           ~~~
4     7      9       56    23   35    11
                     ~~~                 ~~~~
4    7      9      11      23   35    56
                              ~~~

Линейный выбор с подсчетом



При упорядочении таблицы этим методом необходима память для хранения исходной и упорядоченной таблиц,а также дополнительно должна быть выделена память под счетчик для каждой записи таблицы.
Просмотр таблицы начинается с первой записи. Ее ключ сравнивается с ключами последующих записей.При этом счетчик большего из сравниваемых ключей увеличивается на 1. При втором просмотре таблицы первый ключ уже не рассматривается,второй ключ сравнивается со всеми последующими.Результаты сравнений фиксируются в счетчиках. Для таблицы,содержащей n элементов,этот процесс повторяется n-1 раз.
После выполнения всех просмотров счетчик каждого элемента указывает, какое количество ключей таблицы меньше ключа этого элемента.Эти счетчики используются затем в качестве индексов элементов результирующей таблицы. Поместив записи в результирующую таблицу в соответствии со значениями их счетчиков ,получим упорядоченную таблицу. Выполняется n-1 просмотров с n/2 сравнениями в среднем при
каждом    просмотре.Значения счетчиков изменяются столько раз,сколько выполняется сравнений.
Число пересылок равно n.

Рассмотрим пример использования этого метода.


Исходная таблица и массив счетчиков:
--------------T-----------T----------¬
¦ индексы      ¦ ключи       ¦ счетчики ¦
+-------------+-----------+----------+
¦        0             ¦      9           ¦              0 ¦
¦        1             ¦      5           ¦              0 ¦
¦        2             ¦      10         ¦              0 ¦
¦        3             ¦      2           ¦              0 ¦
L-------------+-----------+-----------

Рассмотрим изменение массива счетчиков в результате просмотров:

1-й    2-й 3-й    Результирующая таблица (ключи):

    2    2     2         2
    0    1     1         5
    1    2     3         9
    0    0     0         10

Содержание



 

 
Интересное в сети
 
10 новых программ
CodeLobster PHP Edition 3.7.2
WinToFlash 0.7.0008
Free Video to Flash Converter 4.7.24
Total Commander v7.55
aTunes 2.0.1
Process Explorer v12.04
Backup42 v3.0
Predator 2.0.1
FastStone Image Viewer 4.1
Process Lasso 3.70.4
FastStone Image Viewer 4.0
Xion Audio Player 1.0.125
Notepad GNU v.2.2.8.7.7
K-Lite Codec Pack 5.3.0 Full


Наши сервисы
Рассылка новостей. Подпишитесь на рассылку сейчас и вы всегда будете в курсе последних событий в мире информационных технологий.
Новостные информеры. Поставьте наши информеры к себе и у вас на сайте появится дополнительный постоянно обновляемый раздел.
Добавление статей. Если вы являетесь автором статьи или обзора на тему ИТ присылайте материал нам, мы с удовольствием опубликуем его у себя на сайте.
Реклама на сайте. Размещая рекламу у нас, вы получите новых посетителей, которые могут стать вашими клиентами.
 
Это интересно
 

Copyright © CompDoc.Ru
При цитировании и перепечатке ссылка на www.compdoc.ru обязательна. Карта сайта.