Обсуждение:Сортировка цикла

Инструмент проверки псевдокода

Этот скрипт Python проверяет, что псевдокод статьи сортирует правильно и выполняет теоретическое минимальное количество записей для всех сортируемых массивов (['b', 'b', 'c', 'a'] и [25, 25, 1003, -5] неразличимы для сортировщика, поэтому вам нужно проверить только один из каждого типа) определенной длины. Я тестировал его с длинами от 0 до 10. — Olathe ( talk ) 20:00, 4 октября 2010 (UTC) [ reply ]

импортировать itertools  def тест(длина=5): если длина == 0: обр = [] печать обр., пишет = циклСорт(arr) печатать пишет если пишет != 0: print "ОШИБКА: cycleSort выполнил избыточную запись!" если len(arr) != 0: print "ОШИБКА: cycleSort изменил длину массива!" возвращаться # Ужасно неэффективный способ проверки всех уникальных для сортировки тестовых векторов. для tup в itertools.product(диапазон(длина), повтор=длина): arr = [x для x в tup] послед = Истина для i в диапазоне (макс(арр)): если нет (i в обр.): последовательность = Ложь если послед.: bak = отсортировано(arr) необходимоЗаписей = длина для i в диапазоне (len(arr)): если arr[i] == bak[i]: необходимоЗаписей -= 1 печать обр., пишет = циклСорт(arr) печатать пишет если len(arr) != длина: print "ОШИБКА: cycleSort изменил длину массива!" возвращаться если обр != бак: print "ОШИБКА: cycleSort не выполнил сортировку правильно!" возвращаться если пишет != нужноЗаписывает: print "ОШИБКА: cycleSort выполнил избыточную запись!" возвращаться
Retrieved from "https://en.wikipedia.org/w/index.php?title=Talk:Cycle_sort&oldid=1201295379"