Classificação de uma matriz de dados é um dos problemas clássicos da ciência da computação, e por isso deve vir como nenhuma surpresa que uma grande variedade de métodos para a classificação em Turbo C e outras linguagens de ter sido concebida . Eles vão desde métodos de implementar simples ineficientes , mas para muito mais rápido , mas os métodos mais complexos. O melhor algoritmo para uma situação depende do tamanho esperado do conjunto de dados a serem classificados e a importância da eficiência . Bubble Sort
The Bubble Sort é o mais simples , e mais lento , o algoritmo de classificação. Ele simplesmente passa através da matriz , comparando o elemento de corrente para o elemento directamente em frente do mesmo . Se esses dois elementos estão fora de ordem , eles trocam de lugar . Quando o Bubble Sort chega ao fim , ele verifica para ver se algo mudou lugares. Se o fizesse, ele começa de novo desde o início. Ele continua loop através da matriz até que ele consegue completar uma passagem completa , sem fazer qualquer troca . Em média , isso leva O (n ²) tempo, mas se os dados é conhecido por ser muito quase classificado, com talvez apenas um elemento fora do lugar , ele pode trabalhar em O ( n). Então é um bom método para pequenas matrizes que não são classificadas frequentemente ou maiores matrizes que são conhecidos por já ser classificado ( ou quase ) a maior parte do tempo.
Seleção Ordenar
o tipo de seleção é um pouco mais refinado do que o Bubble Sort . O algoritmo procede através de toda a matriz de dados para encontrar o elemento mais pequeno . Onde quer que o elemento é , tem a sua posição trocado com o primeiro elemento , e um contador de nota que o primeiro elemento da matriz é conhecido por ser correctamente classificados . Em seguida, prossegue através de toda a matriz , novamente, excepto para o primeiro elemento ( que é conhecido por estar no lugar correcto . ) Quando se encontra o elemento mais baixo , move-o para a segunda posição e aumenta o contador para indicar que os dois primeiros elementos são conhecidos por serem classificados. No geral, a Ordem Seleção trabalha em O (n ²) tempo, mas ele tem uma vantagem: quando muito, apenas n-1 muda nunca ocorrer para a matriz, uma vez que cada elemento só é movido quando a sua posição é conhecida . Isto o torna um bom algoritmo em algumas situações exóticas , onde a gravação de dados na memória leva drasticamente mais do que lê-lo.
Quicksort
Como o nome indica , o QuickSort é rápido. Em média, ele pode realizar uma espécie de O (n log n) . Mas é muito mais complexa do que muitos outros programas e exige que o desenvolvedor saber um pouco sobre os dados na matriz antes da mão. Em primeiro lugar, um "valor pivot " deve ser escolhido. Este é o valor que o desenvolvedor acredita que está perto da média de todos os valores na matriz. Quanto melhor for o valor do pivô , mais rápido o Quicksort irá executar. Em seguida , a matriz é dividida em dois grupos: aqueles acima do valor de pivô são movidos para o lado direito , e aqueles abaixo do valor de pivô são movidos para o lado esquerdo . Felizmente, os dois lados estão perto de ser iguais em tamanho , mas eles não precisam ser exatamente o mesmo . Por fim , o algoritmo de classificação rápida começa do zero em cada lado , com novos valores de rotação escolhidos , e estas metades são divididas em quartos. Quando o quicksort subdividiu a matriz de modo que cada secção tem apenas um valor , a matriz foi classificada.
Como a maioria dos algoritmos recursivos , isso pode ser difícil de visualizar , de modo que são incentivados a ver o passo a passo - exemplo dado na terceira referência.