Прикреплённый файл «sort.py»
Загрузка 1 #!/usr/bin/python
2 # coding: utf8
3 '''
4 Различные алгоритмы сортировки, их оценка и отображение
5 '''
6
7 import sort_show, sort_count, sys, random
8
9 def sCompare(p):
10 for i in xrange(0,len(p)-1):
11 m=i
12 for j in xrange(i+1,len(p)):
13 if sort_show.GT(p,j,m):
14 m=j
15 sort_show.Swap(p,i,m)
16
17 def sQuick(p):
18 parts=[(0,len(p))] # отрезки, которые надо поделить на большие и малые значения
19 while parts:
20 nparts=[]
21 for beg,end in parts:
22 if beg>end-2: continue
23 if beg==end-2:
24 if sort_show.GT(p,end-1,beg):
25 sort_show.Swap(p,end-1,beg)
26 continue
27 i,j,m=beg,end-1,end-1
28 while i<j:
29 while sort_show.GT(p,i,m):
30 i+=1
31 sort_show.Swap(p,i,j)
32 m=i
33 while sort_show.GT(p,m,j):
34 j-=1
35 sort_show.Swap(p,i,j)
36 m=j
37 nparts+=[(beg,i),(j,end)]
38 parts=nparts
39
40 def sMerge(p):
41 i,parts=0,[]
42 while i<len(p)-1: # первоначальное разбиение
43 if sort_show.GT(p,i+1,i):
44 sort_show.Swap(p,i,i+1)
45 j=i+1
46 while j<len(p)-1 and not sort_show.GT(p,j+1,j):
47 j+=1
48 parts.append((i,j+1))
49 i=j+1
50 if i==len(p)-1: parts.append((i,i+1))
51 while len(parts)>1:
52 parts,oparts=[],parts
53 while len(oparts)>1:
54 p1,p2=oparts.pop(0),oparts.pop(0)
55 s1,s2=range(*p1),range(*p2)
56 ind=[]
57 while s1+s2:
58 s=s1 and (not s2 or sort_show.GT(p,s1[0],s2[0])) and s1 or s2
59 ind.append(s.pop(0))
60 sort_show.Swapn(p,ind,range(p1[0],p2[1]))
61 parts.append((p1[0],p2[1]))
62 if oparts: parts.append(oparts.pop())
63
64 N=len(sys.argv)>1 and int(sys.argv[1]) or 32
65 F=len(sys.argv)>2 and eval("s"+sys.argv[2]) or sCompare
66 P=len(sys.argv)>3 and float(sys.argv[3]) or 0.1
67
68 sort_show.Init((1024,768),P)
69
70 A=random.sample(xrange(N),N)
71 F(A)
72 sort_show.Fill(A)
73 sort_show.Wait()
74 print sort_count.COUNT
Прикреплённые файлы
Для ссылки на прикреплённый файл в тексте страницы напишите attachment:имяфайла, как показано ниже в списке файлов. Не используйте URL из ссылки «[получить]», так как он чисто внутренний и может измениться.- [получить | показать] (2011-09-26 11:35:27, 2.2 KB) [[attachment:sort.py]]
- [получить | показать] (2011-09-26 11:35:27, 0.8 KB) [[attachment:sort_count.py]]
- [получить | показать] (2011-09-26 11:35:27, 2.3 KB) [[attachment:sort_show.py]]
Вам нельзя прикреплять файлы к этой странице.