Лекция_8.ppt
- Количество слайдов: 12
Алгоритмы обработки массивов Поиск и сортировка Лекция 8 24 октября 2014 г. Бабалова И. Ф.
Физическое представление массивов 1. Статический массив a 1 a 2 i …. . an-1 an n - у статического массива постоянная величина Вставить новый элемент в массив. . Последовательность действий: • Проверить возможность добавления элемента массива • Сместить вправо все элементы после i-ого элемента • Вставить новый элемент вместо i-ого элемента • Сохранить новую размерность массива адрес 2. Динамический массив i a 0 a 1 ……. . an-1 • Увеличить n на количество вставляемых значений • Задать новую длину массива Setlength(a, n); • Сместить вправо все элементы после i-ого элемента • Вставить новый элемент в динамический массив: 2
Основные действия с массивами данных 1. Ввод/вывод массивов 2. Поиск заданного значения в массиве 3. Удаление элемента из массива 4. Добавление нового элемента на заданное место 5. Сортировка массива по заданному признаку Замечание. Массивы одного типа можно переприсваивать: Type aa=array [1. . 20] of real; var a, b: aa; begin <ввод массива a> b: =a; // Получаем копию массива a 3
Методы поиска данных в массиве Алгоритм последовательного поиска X=8 a 1 3 a 2 9 a 3 5 …. . an-1 8 an 7 i =1 Перебираются последовательно все n элементов до получения истинного значения результата сравнения ai=x Количество сравнений ~ n Алгоритм бинарного поиска a 1 -1 Up =1 a 2 2 i a 3 5 a 4 7 a 5 8 a 6 10 Middle= (down – up) div 2 (7+1) div 2 =4 j a 7 11 Down=7 i=middle Сравниваем x cо средним элементом. Если x < среднего, тогда Up делаем равным Middle, иначе Down = Middle Необходима проверка величины индекса i, чтобы он не стал больше j. Количество сравнений ~ log 2(n) 4
Бинарный поиск Алгоритм бинарного поиска n, a, x i: =1 j: =n z: =0 Считаем количество сравнений k: =( i+j) div 2 true X<a[k] false j: =j-1 i: =k j: =k z: =z+1 false (a[k]=x) or( i>j) конец a[k] true 5
Основные правила сортировки Сортировка – это упорядочивание информации по назначенному признаку. Массив сортируется на своем месте в памяти Количество известных методов сортировки ~ 300. Оценка качества методов сортировки производится по двум показателям: • • Количество сравнений элементов массива C (Compare) ~ O(n 2) Количество перемещений элементов массива M (Move) ~O(n 2) Математический анализ методов сортировки показывает, что среднее количество перемещений элементов может быть ~ n/3. На этом выводе базируется многообразие методов сортировки Постараемся проанализировать методы сортировки с уменьшением перемещений, изменения направлений сортировки и увеличения расстояния между перемещаемыми элементами.
Наиболее часто используемые методы сортировки • Простые обменные сортировки: Обменом, Вставками, Выбором • Сортировка в разных направлениях ( Шейкер) • Быстрая сортировка ( Хоора ) • Сортировка слиянием • Сортировка с убывающим приращением (Шелла) • Поразрядная сортировка • Сортировка с помощью дерева Рассмотрим группу обменных сортировок буфер 1 5 3 2 4 Основа всех сортировок – это обмен значениями через вспомогательную, буферную переменную. Последовательность перемещений
Сортировка массивов Метод простого обмена: a 1. . n 7 4 1 проход 4 2 проход 2 3 проход 2 10 3 1 7 6 3 1 10 4 6 3 1 7 10 2 4 3 1 6 7 10 4 проход 2 3 1 4 6 7 10 5 проход 2 1 3 4 6 7 10 6 проход 1 2 6 2 3 4 Временная оценка такого метода соответствует t ≈O(n 2) ………………………………… Усовершенствование метода возможно в связи с тем, что в результате каждого прохода последовательности самый большой элемент оказывается в конце последовательности (при упорядочивании по возрастанию)
Метод простого выбора 21 18 31 75 44 28 -1 33 -1 18 31 75 44 28 21 33 -1 18 21 75 44 28 31 33 Mср=n(ln(n)+0, 577216 ) -1 18 21 28 44 75 31 33 -1 18 21 28 31 75 44 33 -1 18 21 28 31 33 44 75 Количество сравнений Ищется наименьший элемент из оставшихся Количество перестановок - 5. а элементов в массиве – 8. При неизвестном порядке значений эта сортировка быстрее, чем сортировка простым обменом. Оценка времени сортировки t ≈O(n)
Алгоритм сортировки простым выбором A 1 2 Выбор i<=n-1 a [k]: = a [i] Перестановка минимального элемента да k: =j G i: =i+1 J<=n a [ j]<x a [ i ]: =x H J: =i+1 нет E F X: = a [i] a, n нет да B 4 k: =i конец i: =1 C 4 D 2 a, n B D 3 x: =a [ j ] Цикл поиска наименьшего элемента j: =j+1 да нет
Шейкер сортировка В этом алгоритме изменяется направление движения по упорядочиваемой последовательности. Среднее число проходов, определенное Кнутом, равно ~n-k 1√ n. Число обменов остается таким же, как и в простых Методах сортировки L=2 R=8 L=3 L=4 R=7 L=4 R=4 43 55 12 41 93 17 5 64 5 43 55 12 41 93 17 64 5 43 12 41 55 17 64 93 5 12 17 41 43 55 64 93 5 12 43 17 41 55 64 93 Здесь указаны направления движения по массиву Управление процессом сортировки обеспечивается неравенством left < right. При равенстве левой и правой границ массива процесс сортировки завершается Анализ Шейкер - сортировки
Алгоритм шейкер - сортировки 1 SHk. R G 3 A i: =k+1 B j: =l да H нет j<r I H 2 a [j]: =x k: =j j: =r j: =j-1 k: =j j: =j+1 a[j-1]> a [j] a[j-1]: =a [j] k: =n a[j]: =x G да x: =a [j-1] r: =n a[j-1]: =a[j] F нет i: =2 x: =a[j-1] E 3 n, a нет a[j-1]>a[j] C D 2 I 1 да нет A 1 r: =k-1 i>r да нет j>=i Вывод a end да
Лекция_8.ppt