Программирование. Программирование на языке Python (Полякова К.Ю.). Общие сведения о языке Python История
Скачать 5.72 Mb.
|
Быстрая сортировкаШаг 2: переставить элементы так: при сортировке элементы не покидают « свою область»! Шаг 1: выбрать некоторый элемент массива X
Шаг 3: так же отсортировать две получившиеся области Разделяй и властвуй (англ. divide and conquer) Медиана – такое значение X, что слева и справа от него в отсортированном массиве стоит одинаковое число элементов (для этого надо отсортировать массив…).
Как лучше выбрать X? ? Быстрая сортировкаРазделение: выбрать любой элемент массива (X=67) установить L = 1, R = N увеличивая L, найти первый элемент A[L], который >= X (должен стоять справа) уменьшая R, найти первый элемент A[R], который <= X (должен стоять слева) если L<=R то поменять местами A[L] и A[R] и перейти к п. 3 иначе стоп.
Быстрая сортировка
L > R : разделение закончено! ! Быстрая сортировкаN = 7 A = [0]*N # заполнить массив qSort( A, 0, N-1 ) # сортировка # вывести результат Основная программа: Быстрая сортировкаdef qSort ( A, nStart, nEnd ): if nStart >= nEnd: return L = nStart; R = nEnd X = A[(L+R)//2] while L <= R: while A[L] < X: L += 1 while A[R] > X: R -= 1 if L <= R: A[L], A[R] = A[R], A[L] L += 1; R -= 1 qSort ( A, nStart, R ) qSort ( A, L, nEnd ) qSort ( A, nStart, R ) qSort ( A, L, nEnd ) рекурсивные вызовы while A[L] < X: L += 1 while A[R] > X: R -= 1 разделение на 2 части массив начало конец |