Прикреплённый файл «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 из ссылки «[получить]», так как он чисто внутренний и может измениться.

Вам нельзя прикреплять файлы к этой странице.