Algoritmo de ordenação Quick Sort
Publicado por João Cristiano Monteiro da Silva (última atualização em 30/11/2010)
[ Hits: 10.104 ]
Algoritmo que implementa a ordenação quick sort, aplicando o conceito de template (permite reutilização de código) e partição, conceito amplamente abordado para explicar esse tipo de ordenação.
#include <iostream> #include <stdlib.h> using namespace std; template <typename T> void troca(T *a, T *b) { T aux = *a; *a = *b; *b = aux; } template <typename T> void quicksort(T aux[], int inicio, int fim) { if (fim > inicio) { int retorno = particao(aux, inicio, fim); quicksort(aux, inicio, retorno - 1); quicksort(aux, retorno + 1, fim); } } template <typename T> int particao(T aux[], int inicio, int fim) { int temp = inicio; while (true) { while (aux[inicio] <= aux[temp]) inicio++; while (aux[fim] > aux[temp]) fim--; if (fim < inicio) { troca(&aux[temp], &aux[fim]); return (fim); } troca(&aux[inicio], &aux[fim]); } } int main(int argc, char **argv) { //int vetor[8] = {25, 32, 12, -8, 9, 220, 5, 1}; //double vetor[8] = {25.56, 32.12, 12.89, -8.54, 9.08, 220.54, 5.48, 1.56}; char vetor[8] = {'h', 'a', 'd', 'e', 'f', 'g', 'b', 'c'}; cout << "Vetor original: " << endl; for (int i = 0; i < 8; i++) { cout << "Posicao " << i << " = " << vetor[i] << endl; } cout << endl << endl; cout << "Vetor ordenado: " << endl; quicksort(vetor, 0, 7); for (int i = 0; i < 8; i++) { cout << "Posicao " << i << " = " << vetor[i] << endl; } return (EXIT_SUCCESS); }
Mudando Cor da Letra e Fundo de Tela
Listando processos via /proc/PID
Thread, Courses, Shell e Aquivo
Nenhum comentário foi encontrado.
Atenção a quem posta conteúdo de dicas, scripts e tal (6)
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
O mínimo que você precisa saber sobre o terminal (parte 2)
O mínimo que você precisa saber sobre o terminal (parte 1)
Como iniciar uma máquina virtual do VirtualBox automaticamente no boot do LUbuntu 18 LTS
Mudar o gerenciador de login (GDM para SDDM e vice-versa) - parte 2
Como deixar as abas do Firefox mais fininhas
Mudar o gerenciador de login (GDM para SDDM)
"Tentando" fazer com que programas rodem no Wayland e no X11
Porblema com MergeList [RESOLVIDO] (10)
Melhor hospedagem em nuvem para projetos Laravel com baixo custo? [RES... (7)
Como baixar os drivers de áudio no linux mint? (7)
Como posso localizar o arquivo HTML da página inicial do GLPI dentro d... (2)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta