
- •1. Архитектура машинной памяти
- •2. Адресация памяти
- •3. Три уровня представления данных
- •4.Внутренняя структура записи
- •5. Типы структур данных
- •7. Массивы
- •8. Стеки
- •9.Очередь
- •10. Таблица
- •11. Способы размещения, основанные
- •12.Сортировка. Метод выбора
- •13. Метод обмена (пузырька)
- •14. Метод вставок
- •15. Метод подсчета
- •16. Метод Шелла
- •17.Внешняя сортировка
- •18. Последовательный поиск
- •19. Ускоренные методы поиска. Двоичный поиск. Блочный поиск
- •20.Поиск по двоичному дереву
12.Сортировка. Метод выбора
При сортировке этим методом упорядоченная последовательность записей создается на том же участке памяти, что и исходная последовательность. В течение первого прохода осуществляется поиск наименьшего элемента. После того как этот элемент найден, его меняют местами с первым элементом исходной последовательности, в результате чего наименьший элемент занимает первую позицию в формируемой упорядоченной последовательности. Затем осуществляется поиск следующего наименьшего элемента среди оставшихся. Найденный элемент меняется местами со вторым элементом исходной последовательности. После второго прохода окажется сформированной последовательность из двух элементов, первый из которых меньше второго. Поиск элементов со следующими наименьшими значениями ключа и помещение их в соответствующие позиции исходной последовательности продолжается до тех пор, пока все элементы не будут отсортированы в восходящем порядке.
Общее число сравнений С=сумма (от i=1 до N-1)(N-i)=0.5N(N-1) (1)
При сортировке рассмотренным методом число сравнений не зависит от степени упорядоченности исходной последовательности. Поэтому полученное выражение определяет минимальное, максимальное и среднее число сравнений. Для оценки среднего числа сравнений можно использовать следующую аппроксимацию выражения (1): 0,5N2. Такая аппроксимация дает ошибку 1 %. При N=100
Количество перестановок элементов зависит от того, как расположены элементы исходной последовательности. Однако в любом случае в течение одного прохода потребуется не более одной перестановки; следовательно, максимальное количество перестановок равно N — 1. В лучшем случае, когда исходная последовательность уже упорядочена, не потребуется ни одной перестановки. Следовательно, среднее число перестановок пропорционально N/2.
13. Метод обмена (пузырька)
При сортировке этим методом упорядоченная последовательность создается на том же месте в памяти, где располагалась исходная последовательность. В процессе сортировки производится попарное сравнение соседних элементов. Если порядок между сравниваемыми элементами нарушен, они меняются местами. Этот метод обмена называется часто методом пузырька, так как наименьшие элементы с каждым проходом, подобно пузырькам, "всплывают" по направлению к первой позиции последовательности.
После каждого прохода может быть сделана проверка, были ли совершены перестановки в течение данного прохода. Если перестановок не было, то это означает, что последовательность упорядочена и дальнейших проходов не требуется. В течение прохода фиксируется последний элемент, участвующий в обмене (на рис. 11.2 эти элементы подчеркнуты двойной чертой). В очередном проходе подчеркнутый элемент и все последующие в сравнении не участвуют, так как начиная с этой позиции последовательность уже упорядочена.
Число сравнений для этого метода зависит от числа проходов, необ-ходимых для сортировки. В худшем случае, когда последовательность имеет обратную упорядоченность, в течение каждого i-го прохода выполняются перестановки, а число проходов равно N - 1. При этом для сортировки потребуется максимальное число сравнений Сmax= сумма (от i=1 до N-1)(N-i)=0.5N(N-1)
Число обменов при сортировке методом пузырька зависит от степени упорядоченности исходной последовательности. Если исходная последовательность полностью упорядочена, то обменов нет.