Tudo que você precisa saber sobre o Quicksort em C ++



Este artigo fornecerá a você um conhecimento detalhado e abrangente de como implementar o Quicksort em C ++ com exemplos.

Existe uma infinidade de algoritmos de classificação. Encontrar o ajuste certo para seu aplicativo é uma tarefa que requer um breve entendimento de fatores como desempenho, complexidade de tempo, comprimento de código, etc. de um algoritmo específico. Nesta postagem, daremos uma olhada em todos os conceitos essenciais necessários para implementar o Quicksort em C ++ na seguinte ordem:

Compreendendo o Algoritmo Quicksort

Assim como Mesclar Classificar , Quicksort segue a estratégia de dividir para conquistar. Ao usar a estratégia de dividir e conquistar, dividimos o problema em muitos subproblemas e os resolvemos recursivamente. Primeiramente entenderemos todo o processo passo a passo e depois, com a ajuda de um exemplo, desenvolveremos um conhecimento profundo de todo o processo.





  1. Primeiro, pediremos ao usuário o array não classificado.

  2. Assim que tivermos nosso array não classificado, precisamos selecionar um valor pivô do array. Podemos escolher qualquer valor.



  3. Depois de selecionar o ponto de pivô, precisamos organizar os outros elementos da matriz de forma que, todos os elementos menores que o valor de pivô sejam colocados à direita do valor de pivô e todos os elementos maiores que o pivô o valor deve ser colocado à direita do valor pivô.

  4. Executamos a etapa 3 até obtermos nosso array classificado.

Agora, vamos considerar um exemplo e implementar o algoritmo e ver como ele funciona.



Olá [5, 4, 1, 11, 9, 6, 2, 3] para este exemplo, sempre consideraremos o pivô como o elemento mais à direita da lista.

Quicksort em C ++

Vamos passar por cada etapa e entender a lógica que usamos para resolver o problema.

mapa de hash vs tabela de hash
  • Primeiro, selecionamos '3' como nosso pivô e organizamos todos os elementos menores que '3' à direita e todos os elementos maiores que '3' à direita.

  • Neste ponto, temos 2 subproblemas. Vamos primeiro resolver o subproblema à direita. Selecionamos um como nosso pivô e colocamos '2' à direita.

  • Para resolver o segundo subproblema, selecionamos '6' como nosso pivô e posicionamos os elementos como discutimos anteriormente.

  • Temos mais 2 subproblemas. O primeiro é resolvido selecionando 4 como o pivô e o segundo é resolvido selecionando 9 como o pivô. Finalmente, temos nosso array classificado com os elementos colocados no índice sublinhado.

Nota- O ponto importante a entender aqui é que todas as operações ocorrem na mesma matriz. Novos arrays não são criados.

Pseudocódigo para Quicksort em C ++

QuickSort (array [], start_index, end_index) {if (start_index

Programa Quicksort em C ++

Nós entendemos o algoritmo e desenvolvemos uma compreensão profunda do funcionamento do algoritmo. Vamos implementar Quicksort em C ++ e escrever um programa para classificar uma matriz.

#include using namespace std void swap_elements (int * a, int * b) {int temp = * a * a = * b * b = temp} partição int (int array [], int start_index, int end_index) {int pivot = matriz [end_index] int i = (start_index - 1) para (int j = start_index j<= end_index- 1 j++) { if (array[j] <= pivot) { i++ swap_elements(&array[i], &array[j]) } } swap_elements(&array[i + 1], &array[end_index]) return (i + 1) } void quickSort(int array[], int start_index, int end_index) { if (start_index < end_index) { int partition_index = partition(array, start_index, end_index) quickSort(array, start_index, partition_index - 1) quickSort(array, partition_index + 1, end_index) } } void printArray(int array[], int number) { int i cout<<'Sorted Array: ' for (i = 0 i < number i++) cout << array[i] << ' ' cout << endl } int main() { int Hello[30] int i int NumberofElements cout<>Custo de NumberofElements<<'Enter the elements one by one: ' for(i=0i>Hello [i]} quickSort (Hello, 0, NumberofElements-1) printArray (Hello, NumberofElements) return 0}

Resultado:

Complexidade de tempo

Vamos falar sobre o aspecto mais importante de qualquer algoritmo de classificação, ou seja, a complexidade do tempo. Ele nos fala sobre o desempenho do algoritmo em vários cenários. Esses valores podem nos ajudar a decidir se podemos usar esse algoritmo para nossa aplicação.

  • Melhor caso- Em)
  • Caso médio (nlogn)
  • Pior caso- Em2)

Com isso, chegamos ao fim deste artigo Quicksort em C ++. Se você deseja saber mais, confira o pela Edureka, uma empresa de aprendizagem online confiável. O curso de certificação e treinamento Java J2EE e SOA da Edureka foi projetado para treiná-lo tanto para os conceitos básicos e avançados do Java, juntamente com várias estruturas Java como Hibernate e Spring

Tem alguma questão para nós? Mencione isso na seção de comentários deste blog e entraremos em contato com você o mais breve possível.