domingo, 20 de dezembro de 2009

Problema 10.5

Porque analisamos o vector em toda a sua dimensão se a partir de um certo índice não houve mais trocas? Não precisamos, pois não haver trocas significa: vector ordenado daí para a frente! O algoritmo apresetnado resolve essa questão.
01.def bubblesort_3(seq):
02. """Ordenamento por bolhas.
03. Apenas ordena o subvector esquerdo onde houve trocas!
04. """
05. copia = seq[:]
06. indice= len(seq)-1
07. while indice > 0:
08.  cont = indice - 1
09.  indice = 0
10.  for i in range(cont+1):
11.   if copia[i] > copia[i+1]:
12.    copia[i],copia[i+1] = copia[i+1],copia[i]
13.    indice=i
14. return copia

Sem comentários:

Enviar um comentário