Implementação de ordem decrescente de classificação rápida em linguagem C

Implementação de ordem decrescente de classificação rápida em linguagem C

A classificação rápida é um algoritmo de classificação comumente usado. Sua flexibilidade e eficiência o tornam um dos métodos de classificação favoritos entre os programadores. Neste artigo, exploraremos como implementar o algoritmo de classificação rápida usando a linguagem C e implementaremos um exemplo de classificação descendente.

Implementação de ordem decrescente de classificação rápida em linguagem C

O algoritmo de classificação rápida é baseado na ideia de dividir e conquistar. Ao selecionar um elemento de referência, o array a ser classificado é dividido em dois subarrays. Os elementos menores que o elemento base são colocados na submatriz esquerda e os elementos maiores que o elemento base são colocados na submatriz direita. Em seguida, chamadas recursivas são feitas para as submatrizes esquerda e direita, respectivamente, até que o comprimento da submatriz seja 1 ou 0 e a classificação seja concluída.

Agora, vamos começar a implementar esse algoritmo!

#incluir

troca vazia(int *a, int *b) {

temperatura interna = *a;

*uma = *b;

*b = temperatura;

}

partição int(int arr[], int baixo, int alto) {

int pivô = arr[alto];

int i = (baixo - 1);

for (int j = baixo; j <= 1=“” alto=“” -=“”>

if (arr[j] > pivô) {

eu++;

trocar(&arr[i], &arr[j]);

}

}

swap(&arr[i + 1], &arr[alto]);

retornar (eu + 1);

}

void quickSort(int arr[], int baixo, int alto) {

if (baixo < alto) {

int pi = partição(arr, baixo, alto);

quickSort(arr, baixo, pi - 1);

quickSort(arr, pi + 1, alto);

}

}

int principal() {

int arr[] = {5, 2, 8, 3, 1};

int n = sizeof(arr) / sizeof(arr[0]);

quickSort(arr, 0, n - 1);

printf(\Resultados da classificação decrescente: \ for (int i = 0; i < n; i++) {

printf(\d\arr[i]);

}

retornar 0;

}

No código acima, primeiro definimos uma função swap que é usada para trocar dois elementos. Em seguida, usamos a função partição para determinar a posição correta do elemento base e dividir a matriz em duas submatrizes com base nessa posição. Finalmente, classificamos usando chamadas recursivas.

Na função principal, definimos um array arr a ser classificado e calculamos o comprimento n do array. Em seguida, chamamos a função quickSort para classificar o array e usamos a função printf para imprimir os resultados classificados.

O resultado da execução deste código será: Resultado da classificação em ordem decrescente: 8 5 3 2 1.

A complexidade de tempo do algoritmo de classificação rápida é O(nlogn), onde n é o comprimento da matriz a ser classificada. Isso significa que, no pior caso, a complexidade de tempo do algoritmo será O(n^2). No entanto, ao selecionar racionalmente os elementos de benchmark, podemos evitar ao máximo o pior cenário e, assim, melhorar o desempenho do algoritmo.

Para resumir, este artigo apresenta como usar a linguagem C para implementar o algoritmo de classificação rápida e demonstra-o usando a classificação descendente como exemplo. Espero que através deste artigo, os leitores possam compreender melhor os princípios e a implementação do algoritmo de classificação rápida e serem capazes de usá-lo de forma flexível em suas próprias práticas de programação. Se você tiver mais dúvidas sobre o algoritmo de classificação rápida ou quiser aprender mais conhecimentos relacionados, é recomendável ler mais materiais ou tutoriais relevantes.
Parte do código foi transferida de: https://www.ktiao.com/c/2023-08/254112.html

おすすめ

転載: blog.csdn.net/qq_42151074/article/details/132270992