#!/usr/bin/env python # Written by Magnus Lie Hetland "Everybody's favourite sorting algorithm... :)" def partition(list, start, end): pivot = list[end] # Пусть последний элем. будет разделяющим, bottom = start-1 # Начинаем извне разделяемой части списка top = end # Аналогично done = 0 while not done: # Пока не все элем. разделены ... while not done: # Пока мы не найдём # неупорядоченный элемент ... bottom = bottom+1 # ... Двигаем нижний индекс вверх. if bottom == top: # Если он совпадёт с верхним ... done = 1 # ... то всё сделано. break if list[bottom] > pivot: # Не является ли нижний эл. #неупорядоченным? list[top] = list[bottom]# Тогда перемещаем его # на место верхнего ... break # ... и начинаем поиск сверху. while not done: # Пока не найдём неупорядоченный эл. ... top = top-1 # ... двигаем верхний индекс вниз. if top == bottom: # Если он совпал с нижним ... done = 1 # ... то всё сделано. break if list[top] < pivot: # Является ли верхний # элем. неупорядоченным? list[bottom] = list[top]# Если да, то перемещаем # его на место нижнего ... break # ...и начинаем поиск снизу. list[top] = pivot # Помещаем разделяющий элемент на место. return top # И возвращаем его индекс # (точку разделения подсписков). def quicksort(list,start,end): if start < end: # Если есть хотя бы # два элемента ... split = partition(list, start, end) # ...то разделяем на # два подсписка и ... quicksort(list, start, split-1) # ...сортируем обе половины. quicksort(list, split+1, end) else: return if __name__=="__main__":# Если этот скрипт выполняется как # независимая программа: import sys list = sys.argv[1:] # Получаем аргументы командной строки start = 0 end = len(list)-1 quicksort(list,start,end) # Сортируем весь список аргументов import string print string.join(list) # Распечатываем сортированный список. sys.exit (0) # Выход из программы.