Tot el que heu de saber sobre Quicksort en C ++



Aquest article us proporcionarà una informació detallada i completa sobre com implementar Quicksort en C ++ amb exemples.

Hi ha una gran quantitat d’algoritmes d’ordenació. Trobar l’adequació adequada per a la vostra aplicació és una tasca que requereix una comprensió breu de factors com el rendiment, la complexitat temporal, la longitud del codi, etc. d’un algorisme concret. En aquest post, veurem tots els conceptes essencials necessaris per implementar el Quicksort en C ++ en l’ordre següent:

Comprensió de l'algorisme Quicksort

Igual que Combina la classificació , Quicksort segueix l'estratègia de divisió i conquesta. En utilitzar l’estratègia divideix i conquereix dividim el problema en molts subproblemes i els resolem recursivament. En primer lloc, entendrem tot el procés pas a pas i després, amb l’ajut d’un exemple, desenvoluparem una comprensió profunda de tot el procés.





  1. En primer lloc, demanarem a l’usuari la matriu no classificada.

    php converteix la cadena en matriu
  2. Un cop tenim la matriu sense classificar, hem de seleccionar un valor pivot de la matriu. Podem triar qualsevol valor.



  3. Un cop seleccionem el punt de pivotament després, hem d’organitzar els altres elements de la matriu de manera que tots els elements inferiors al valor de pivot s’han de col·locar a la dreta del valor de pivot i tots els elements superiors al pivot. es col·loquen a la dreta del valor pivot.

  4. Realitzem el pas 3 fins obtenir la nostra matriu ordenada.

Ara, considerem un exemple i implementem l'algoritme i veiem com funciona.



Hola [5, 4, 1, 11, 9, 6, 2, 3] per a aquest exemple, sempre considerarem el pivot com l'element més a la dreta de la llista.

exemple d'arguments de línia d'ordres java

Quicksort en C ++

Passem per cada pas i comprenem la lògica que hem utilitzat per resoldre el problema.

  • En primer lloc, hem seleccionat '3' com a pivot i hem ordenat tots els elements inferiors a '3' a la dreta i tots els elements superiors a '3' a la dreta.

  • En aquest punt, tenim 2 subproblemes. Primer resolem el subproblema de la dreta. N'hem seleccionat un com a pivot i hem col·locat '2' a la dreta.

  • Per resoldre el segon subproblema, seleccionem '6' com a pivot i col·loquem els elements tal com hem comentat anteriorment.

  • Tenim 2 subproblemes més. El primer es resol seleccionant 4 com a pivot i el segon es resol seleccionant 9 com a pivot. Finalment, tenim la nostra matriu ordenada amb els elements situats a l’índex de subratllat.

Nota- El punt important a entendre aquí és que totes les operacions tenen lloc en la mateixa matriu. No es creen noves matrius.

Pseudocodi per a Quicksort en C ++

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

Programa de Quicksort en C ++

Vam entendre l'algorisme i vam desenvolupar una comprensió profunda del funcionament de l'algorisme. Implantem Quicksort a C ++ i escrivim un programa per ordenar una matriu.

#include using namespace std swid_elements (int * a, int * b) {int temp = * a * a = * b * b = temp} partition int (int array [], int start_index, int end_index) {int pivot = array [end_index] int i = (start_index - 1) for (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<>Nombre de costos d'elements<<'Enter the elements one by one: ' for(i=0i>Hola [i]} quickSort (Hello, 0, NumberofElements-1) printArray (Hello, NumberofElements) return 0}

Sortida:

què és una paraula reservada a java

Complexitat temporal

Parlem de l’aspecte més important de qualsevol algorisme d’ordenació, és a dir, de la complexitat temporal. Ens parla del rendiment de l'algorisme en diversos escenaris. Aquests valors ens poden ajudar a decidir si podem utilitzar aquest algorisme per a la nostra aplicació.

  • El millor cas- O (n)
  • Cas mitjà- (nlogn)
  • Pitjor dels casos- O (n2)

Amb això, arribem al final d’aquest article de Quicksort a C ++. Si voleu obtenir més informació, consulteu el per Edureka, una empresa d’aprenentatge en línia de confiança. El curs de formació i certificació de Java J2EE i SOA d’Edureka està dissenyat per formar-vos tant per a conceptes Java bàsics com avançats, juntament amb diversos marcs Java com Hibernate & Spring.

Tens alguna pregunta? Si us plau, mencioneu-ho a la secció de comentaris d’aquest bloc i us respondrem el més aviat possible.