131 Shares 4417 views

classificação técnicas de programação: a classificação "bolha"

bubble sort não só é considerado para ser o método mais rápido, além disso, ele fecha a lista das maneiras mais lentos para organizar. No entanto, ele tem suas vantagens. Assim, o método de classificação de bolha – o mais que nem é uma solução natural e lógica para o problema, se você quiser organizar os itens em uma ordem específica. Uma pessoa comum manualmente, por exemplo, ele vai usá-los – apenas por intuição.

Onde é que um nome tão incomum?

nome do método surgiu, usando a analogia de bolhas de ar na água. É uma metáfora. Assim como pequenas bolhas de ar sobem para cima – porque a sua densidade é maior do que um fluido (neste caso – a água), e cada elemento da matriz, o mais pequeno é o valor, o modo mais gradual ao topo dos números da lista.

Descrição do algoritmo

bubble sort é realizada da seguinte forma:

  • primeira passagem: os elementos dos números de matriz é tomada pelos dois pares e também comparada. Se alguns elementos da equipa de primeiro valor de dois homens é maior do que o segundo, o programa torna-os lugares de câmbio;
  • consequentemente, o maior número de erros a fim da matriz. Enquanto todos os outros elementos permanecem como eles eram, de uma maneira caótica, e requerem mais de triagem;
  • e, por conseguinte, requerem um segundo passo: é feita por analogia com o anterior (já descrito) e tem um número de comparações – menos um;
  • no nero de passagem de três comparações, um a menos do que o segundo, e a dois, do que o primeiro. E assim por diante;
  • resumir que cada passagem tem (todos os valores na matriz, o número particular) de menos (número de passagem) comparações.

Ainda mais curto algoritmo de um programa pode ser escrito como:

  • uma série de números é verificado, desde que quaisquer dois números são encontrados, o segundo deles é obrigado a ser maior do que o primeiro;
  • posicionadas de forma incorrecta em relação uns aos outros elementos das permutas de software matriz.

Pseudocódigo baseado no algoritmo descrito

A implementação mais simples é realizada da seguinte forma:

procedimento Sortirovka_Puzirkom;

começo

ciclo para j de nachalnii_index para konechii_index;

ciclo para i de nachalnii_index para konechii_index-1;

se massiv [i]> massiv [i + 1] (primeiro elemento maior do que um segundo), então:

(Mudança coloca valores);

final

Claro, esta simplicidade só agrava a situação: quanto mais simples o algoritmo, mais ela se manifesta todas as falhas. taxa de investimento de tempo é muito grande mesmo para uma pequena array (aqui vem na relatividade: A quantidade de tempo para o leigo pode parecer pequena, mas na verdade um programador cada segundo ou mesmo milissegundo conta).

Levou a melhor implementação. Por exemplo, tendo em conta a troca de valores em locais de matriz:

procedimento Sortirovka_Puzirkom;

começo

sortirovka = true;

ciclo até sortirovka = true;

sortirovka = false;

ciclo para i de nachalnii_index para konechii_index-1;

se massiv [i]> massiv [i + 1] (primeiro elemento maior do que um segundo), então:

(Alterar elementos locais);

sortirovka = true; (Identificado que a troca foi feita).

End.

limitações

A desvantagem principal – a duração do processo. Quanto tempo é realizada algoritmo de ordenação bolha?

tempo de avanço é calculado a partir do número de números de quadrados na matriz – o resultado final é proporcional.

Se o pior caso a matriz é passado tantas vezes quanto ele tem elementos menos um valor. Isso acontece porque no final não é apenas um elemento, que não têm nada para comparar, e o último passe através da matriz se torna ação inútil.

Além disso, o método eficaz de triagem uma troca simples, como é chamado, apenas para matrizes de tamanho pequeno. Grandes quantidades de dados com a ajuda de processo não vai funcionar: o resultado vai ser um erro ou falha do programa.

dignidade

bubble sort é muito fácil de entender. Os currículos das universidades técnicas no estudo dos elementos de ordenação de sua variedade passar em primeiro lugar. O método é fácil de implementar tanto a linguagem Delphi de programação (L (Delphi), e do C / C ++ (C / C plus plus), um incrivelmente simples valores de algoritmo de localização na ordem certa e no Pascal (Pascal). Bubble sort é ideal para iniciantes.

Devido às desvantagens do algoritmo não é usado em fins extracurriculares.

princípio de classificação Visual

A vista inicial da matriz 8 22 4 74 44 37 1 7

Passo 1 8 22 4 74 44 37 1 7

8 22 4 74 44 1 37 7

8 22 4 74 1 44 37 7

8 22 4 1 74 44 37 7

8 22 1 4 74 44 37 7

8 1 22 4 74 44 37 7

1 8 22 74 4 44 37 7

Passo 2 1 8 4 22 74 44 7 37

1 8 22 4 74 7 44 37

1 8 22 4 7 74 44 37

1 8 22 4 7 74 44 37

1 8 4 22 7 74 44 37

1 4 8 22 7 74 44 37

Passo 3 1 4 8 22 7 74 37 44

1 4 8 22 7 37 74 44

1 4 8 22 7 37 74 44

1 4 8 7 22 37 74 44

1 4 7 8 22 37 74 44

Passo 4 1 4 7 8 22 37 44 74

1 4 7 8 22 37 44 74

1 4 7 8 22 37 44 74

1 4 7 8 22 37 44 74

Passo 5 1 4 7 8 22 37 44 74

1 4 7 8 22 37 44 74

1 4 7 8 22 37 44 74

Passo 1 4 6 7 8 22 37 44 74

1 4 7 8 22 37 44 74

Passo 7 1 4 7 8 22 37 44 74

exemplo bubble sort em Pascal

exemplo:

kol_mas const = 10;

var massiv: matriz [1..kol_mas] de número inteiro;

a, b, k: número inteiro;

começar

writeln ( 'entrada', kol_mas, 'elementos de matriz');

para um: = 1 a kol_mas fazer readln (massiv [a ]);

para um: = 1 a kol_mas-1 faz começar

para b: = a + 1 a kol_mas começarem

se massiv [a]> massiv [ b] então começar

k: = massiv [a]; massiv [a]: = massiv [ b]; massiv [b]: = k;

acabar;

acabar;

acabar;

writeln ( 'após tipo');

para um: = 1 a kol_mas fazer writeln (massiv [a ]);

fim.

EXEMPLO bolha triagem em linguagem C (C)

exemplo:

#include

#include

int principal (int argc, char * argv [])

{

int massiv [8] = {36, 697, 73, 82, 68, 12, 183, 88}, i, ff;

para (;;) {

ff = 0;

for (i = 7; i> 0; i -) {

se (massiv [i] <massiv [i- 1]) {

permuta (massiv [i], massiv [i- 1]);

ff ++;

}

}

se (ff == 0) quebrar;

}

getch (); // atraso de exibição

return 0;

}.