Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Случайное перемешивание массива в Python
Для случайного перемешивания массива в английском языке используется термин shuffle, что по-русски означает "перетасовать". Задача случайного перемешивания не так уж и тривиальна, так как для этого требуется выбрать случайную перестановку. В библиотеке random реализована функция, которая перемешивает массив на месте. random.shuffle(A) Другой вариант перемешивания (использование случайного ключа для сортировки): B = sorted(yourList, key=lambda A: random.random()) Следует понимать, что даже для сравнительно небольших длин массива len(A), общее число перестановок A больше, чем период наилучших генераторов случайных чисел; это означает, что большинство перестановок длинной последовательности никогда не будут созданы. Сортировка подсчетом Иногда сортируемые элементы имеют небольшой диапазон возможных значений. Например, если необходимо отсортировать список натуральных чисел, каждое из которых не более трех-пяти разрядов в длину. Однако количество сортируемых чисел настолько велико, что нужно обработать список за линейное время. Исходная последовательность чисел длины n, а в конце отсортированная, хранится в массиве A. Также используется вспомогательный массив C с индексами от 0 до k-1 изначально заполняемый нулями. · Последовательно пройдём по массиву A и запишем в C[i] количество чисел, равных i. · Теперь достаточно пройти по массиву С и для каждого числа number из диапазона допустимых значений последовательно записать в массив А число number C[number] раз. ПРИМЕР СОРТИРОВКИ ПОДСЧЕТОМ НА PYTHON def SimpleCountingSort(A):
ПРИМЕР СОРТИРОВКИ ПОДСЧЕТОМ НА ЯЗЫКЕ СИ void simpleCountingSort(unsigned char A[], size_t N) { size_t frequency[256]; for(size_t i = 0; i < N; i++) { frequency[A[i]]++; } size_t position = 0; for(unsigned char number = 0; number <= 255; number++) { for(size_t i = 0; i < frequency[number]; i++) { A[position] = number; position++; } } }
ПРИМЕР СОРТИРОВКИ ПОДСЧЕТОМ НА ЯЗЫКЕ PASCAL {Пример сортировки по неубыванию массива, все элементы которого по модулю не превосходят 1000} var arr: array[-1000..1000] of longint; //arr[i] - количество чисел i в массиве i, j, n, x: longint; begin readln(n); for i:= -1000 to 1000 do arr[i]:= 0; for i:= 1 to n do begin read(x); inc(arr[x]); end; for i:= -1000 to 1000 do for j:= 1 to arr[i] do write(i, ' '); end. Поразрядная сортировка Применение поразрядной сортировки имеет одно ограничение: перед началом сортировки необходимо знать
· length – максимальное количество разрядов в сортируемых величинах (например, при сортировке слов необходимо знать максимальное количество букв в слове), · rang – количество возможных значений одного разряда (при сортировке слов – количество букв в алфавите). Для сортировки чисел второе число заранее известно: количество цифр равно основанию системы счисления. Поскольку в большинстве случаев сортируемые числа состоят из небольшого количества разрядов, поразрядная сортировка мало того, что применима, но и работает сравнительно быстро. Допустим, у нас есть числа: 39, 47, 54, 59, 34, 41, 32 (length = 2, rang = 10) 1. Создаем пустые списки, количество которых равно числу rang. 2. Распределяем исходные числа по этим спискам в зависимости от величины младшего разряда (по возрастанию). (Вообще надо создать 10 (rang) списков, но некоторые из них оказались пустыми) 3. Собираем числа в той последовательности, в которой они находятся после распределения по спискам. 4. Повторяем пункты 2 и 3 для всех более старших разрядов поочередно. Запишем алгоритм на Python: A = [12, 5, 664, 63, 5, 73, 93, 127, 432, 64, 34]
|
|||||
Последнее изменение этой страницы: 2017-02-19; просмотров: 731; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.116.90.141 (0.005 с.) |