Quick Sort é uma melhoria na classificação por bolha baseada na ideia binária. A ideia principal é estabelecer uma base, colocar os números menores que a base à esquerda da base e colocar os números maiores que a base à direita da base e, em seguida, classificar ainda mais as duas partes dos números para alcançar classificação da matriz.
Sua vantagem é a alta eficiência e a complexidade média do tempo é O (nlogn). Como o nome sugere, a classificação rápida é o algoritmo de classificação mais rápido e, na melhor das hipóteses, a complexidade do espaço é O (logn). é dividido igualmente sempre. No caso de arrays, o código é relativamente simples.
Sua desvantagem é que é instável. Quando a sequência inicial é ordenada ou basicamente ordenada, a complexidade do tempo cai para O(n^2).
Por exemplo:
publicclassMain{//Método rápido de implementação de linha publicstaticvoidquickRow(int[]array,intlow,inthigh){inti,j,pivot;//Condição final if(low>=high){return;}i=low;j=high;/ /O nó selecionado, o primeiro número da matriz selecionada aqui é usado como o nó pivot=array[low];while(i<j){//Procure um número menor que o nó da direita para a esquerda no final. do loop, ele é encontrado ou i =jwhile(array[j]>=pivot&&i<j){j--;}//Procure um número maior que o nó da esquerda para a direita. , ele é encontrado ou i=jwhile(array[i]<=pivot&&i <j){i++;}//Se i!=j instruções forem encontradas, troque os dois números if(i<j){inttemp=array [i];array[i]=array[j];array [j]=temp;}}//i==j Um ciclo termina, o número de nós de troca e o número de pontos de encontro array[low]=array [i];array[i]=pivot;//array "dividido" "Duas metades", então repita a operação acima quickRow(array,low,i-1);quickRow(array,i+1,high);} publicstaticvoidmain(String[]args){int[]array={6,17, 38,59,2,10};intlow=0,high=array.length-1;quickRow(array,low,high);for( inti:array){System.out.println(i);}}}
Os resultados da execução são os seguintes:
2610173859