Прикреплённый файл «sort_a.py»
Загрузка 1 #!/usr/bin/env python
2 # coding: utf
3 '''
4 Реализовать любой «эффективный» алгоритм сортировки (имеющий сложность порядка N*log(N))
5 Простое (бинарное) слияние
6 '''
7
8 import random, sys
9 from math import *
10
11 # Возможно, неэффективный вариант из-за порождения/присваивания секций
12 def JoinList(A):
13 '''Слияние с изменением секций списка'''
14 N=len(A)
15 for m in xrange(1,int(log(N-1,2))+2):
16 l=2**m # длина цепочки слияния
17 for s in xrange(0,N,l):
18 A1,A2,A3=A[s:s+l/2],A[s+l/2:min(s+l,N)],[]
19 while True:
20 if A1 and A2:
21 if A1[0]<A2[0]: A3.append(A1.pop(0))
22 else: A3.append(A2.pop(0))
23 else:
24 A3+=A1 or A2
25 break
26 A[s:min(s+l,N)]=A3
27
28 N=len(sys.argv)>1 and int(sys.argv[1]) or 20
29 A=random.sample(xrange(N),N)
30 print "Start"
31 JoinList(A)
32 #print A
Прикреплённые файлы
Для ссылки на прикреплённый файл в тексте страницы напишите attachment:имяфайла, как показано ниже в списке файлов. Не используйте URL из ссылки «[получить]», так как он чисто внутренний и может измениться.- [получить | показать] (2012-01-18 09:55:26, 0.4 KB) [[attachment:VyshlovAQsort.py]]
- [получить | показать] (2012-01-17 23:45:31, 0.3 KB) [[attachment:VyshlovAheap.py]]
- [получить | показать] (2012-01-18 09:54:46, 0.3 KB) [[attachment:VyshlovAheapNew.py]]
- [получить | показать] (2012-01-17 21:30:09, 2.1 KB) [[attachment:ray_lab.tar.gz]]
- [получить | показать] (2012-01-18 17:32:13, 1.1 KB) [[attachment:sortG.py]]
- [получить | показать] (2012-01-18 11:06:49, 1.1 KB) [[attachment:sort_a.py]]
- [получить | показать] (2012-01-18 12:54:26, 0.6 KB) [[attachment:sort_s.py]]
Вам нельзя прикреплять файлы к этой странице.