Быстрая сортировка (англ. quicksort), часто называемая qsort по имени реализации в стандартной библиотеке языка Си — широко известный алгоритм сортировки, разработанный английским информатиком Чарльзом Хоаром в 1960 году. Один из быстрых известных универсальных алгоритмов сортировки массивов (в среднем O(n log n) обменов при упорядочении n элементов), хотя и имеющий ряд недостатков. Например, в худшем случае (на некоторых входных массивах) использует время Ω(n2)
- ШАГ 1: Возьмем элемент A[p] за ось и «раскидаем» остальные элементы A[(p+1)..q] по разные стороны от него стороны — меньшие влево, большие — вправо, то есть переставим элементы подмассива A[p..q] так, чтобы вначале шли элементы меньше либо равные A[p] потом элементы, больше либо равные A[p]. Назовет этот шаг разделением (partition).
- ШАГ 2: Пусть r есть новый индекс элемента A[p]. Тогда, если q — p > 2, вызовем функцию сортировки для подмассивов A[p..(r-1)] и A[(r+1)..q].
- Элементы меньшие «оси»
- Элементы равные «оси»
- Элемент
Сервис онлайн тестирования Quizful
На котором есть достаточно большое количество тестов по различным тематикам:
- тесты по администрированию (Unix, Linux, Windows, MacOS)
- тесты по программированию (C++, Java, C#, 1C, PHP, Python, Ruby, Delphi)
- тесты по базам данных (SQL, Oracle, MS SQL, MySql)
- тесты по веб-технологиям (HTML, CSS, JavaScript, HTTP)
- тесты по управлению проектами (экстремальное программирование, Scrum)
Преимущества сервиса Quizful
- Это некоммерческий сервис направленный на помощь IT сообществу
- После прохождения тестов можно просмотреть правильные ответы с объяснениями
- Сайт поддерживается сообществом и пройдя пару тройку тестов, можно добавить свои вопросы или задачи.
Автор: Dmitriy Falko
Дата публикации: 2012-03-19T10:08:00.003+04:00
Выражение raise
raise_stmt ::= «raise» [expression [«from» expression]]
В случае отсутствия expression, повторно возбуждается последнее исключение, которое было активно в данной области. Если такого исключения нет, то возбуждается исключение RuntimeError, чтобы сообщить о данной ошибке.
В противном случае raise выполняет первый expression и получает объект исключения. Он должен являться либо подклассом либо экземпляром BaseException. Если первый expression является именем класса, то создается объект путём вызова класса без передачи аргументов. Читать
object.__del__(self) 2.7
- взаимные ссылки между объектами (в списках или в деревьях)
- ссылки на объекты в стеке функции, где было вызвано исключение, так как в таком случае ссылки на объекты этого стека сохранены в sys.exc_traceback
- ссылки на объекты в стеке, если было вызвано не перехваченное исключение в интерактивном режиме (так как в таком случае ссылки на объекты сохранены в sys.last_traceback)
Автор: Ishayahu Lastov
Генерируем внешние API по-питоновски
В python есть негласное правило — никогда не повторяйся. Чаще всего если в программе приходиться писать почти одно и то-же два раза, значит вы что-то сделали не так. Я приведу пример, как можно автоматизировать генерацию внешних API таким образом, что достаточно будет в одном месте в удобной и универсальной форме описать поддерживаемые вызовы, а все внешнее API для этих вызовов сделает написаный один раз код. Читать
Технические задачки
1. Что будет выведено в результате исполнения программы? Почему?
class A:
def __init__(self, name):
self.name = name
def __del__(self):
print self.name,aa = [A(str(i)) for i in range(3)]
for a in aa:
del a