SlideShare uma empresa Scribd logo
1 de 3
Baixar para ler offline
/**
* Método merge sort, ou ordenação por intercalação, é um exemplo de algoritmo
* de ordenação do tipo dividir-para-conquistar. Sua idéia básica é que é muito
* fácil criar uma sequência ordenada a partir de duas outras também ordenadas.
* Para isso, ele divide a sequência original em pares de dados, ordena-as;
* depois as agrupa em sequências de quatro elementos, e assim por diante,
* até ter toda a sequência dividida em apenas duas partes. O método MergeSort
* rearranja o vetor v[BeginList..EndList-1] em ordem crescente.
**/
void SortingAlgorithms::MergeSort(ElementVector& ev, int BeginList, int EndList)
{
if (BeginList < EndList -1)
{
int middle = (BeginList + EndList)/2;
MergeSort(ev, BeginList, middle);
MergeSort(ev, middle, EndList);
Merges(ev, BeginList, middle, EndList);
}
}
/**
* Método auxiliar ao MergeSort que executa a intercalação das listas.
* O método recebe vetores crescentes v[BeginList..Middle-1] e
* v[Middle..EndList-1] e rearranja v[BeginList..EndList-1] em ordem crescente.
**/
void SortingAlgorithms::Merges(ElementVector & ev, int BeginList, int Middle, int
EndList)
{
int i, j, k;
ElementVector w;
//Executa um resize na lista de elementos auxiliar alocando o necessário para a
//intercalação dos elementos.
w.resize(EndList - BeginList);
//Estabelecendo os limites para a intercalação
i = BeginList; j = Middle; k = 0;
//Verifica quem deve ser intercalado
while( i < Middle && j < EndList)
{
if (ev[i] <= ev[j]) w[k++] = ev[i++];
else w[k++] = ev[j++];
}
//Executa as intercalações finais.
while(i < Middle) { w[k++] = ev[i++]; }
while(j < EndList) { w[k++] = ev[j++]; }
//Copia a lista auxiliar para a lista original
for( i = BeginList; i < EndList; ++i)
{
ev[i] = w[i-BeginList];
}
//Limpa a lista auxiliar ...
w.clear();
}
/**
* Método de Ordenação QuickSort é um método de ordenação muito rápido e
* eficiente, inventado por C.A.R. Hoare em 1960. O Quicksort é um algoritmo
* de ordenação não-estável que adota a estratégia de divisão e conquista,
* podendo sofrer degeneração no melhor caso e caso médio [nlogn] para o pior
* caso [n^2]. Essa implementação pode ser encontrada no livro de Sedgewick.
* O método rearranja o vetor v[p..r], com p <= r+1, de modo que ele fique
* em ordem crescente. Esse método não se utiliza de um particionador explicito
* e o pivô de verificação sempre é dado por um elemento central.
**/
void SortingAlgorithms::QuickSort(ElementVector& ev, int BeginList, int EndList)
{
int i , j;
Element c, t;
if (BeginList < EndList)
{
c = ev[(BeginList + EndList) / 2];
i = BeginList; j = EndList;
while (i <= j)
{
while (ev[i] < c) { ++i; }
while (c < ev[j]) { --j; }
if (i <= j)
{
t = ev[i], ev[i] = ev[j], ev[j] = t;
++i, --j;
}
}
//Segmento onde ocorre a chamada recursiva ao método
QuickSort(ev, BeginList, j);
QuickSort(ev, i, EndList);
}
}
/**
* Método de ordenação quick sort que utiliza uma função de particionamento
* da lista de elementos. Esse método utiliza um particionador explícito
* porém seu pivo de verificação não é um elemento central previamente definido
* e sim elementos que se encontram mais a esquerda de cada partição definida.
**/
void SortingAlgorithms::QSort(ElementVector& ev, int left, int right)
{
int new_right;
if (right > left)
{
new_right = Partition(ev, left, right);
QSort(ev,left, new_right - 1);
QSort(ev,new_right + 1,right);
}
return;
}
/**
* Método auxiliar ao QSort que executa particionamento da lista de elementos.
**/
int SortingAlgorithms::Partition(ElementVector& ev, int left, int right)
{
register int i, j;
i = left;
for (j = left + 1; j <= right; j++)
{
if (ev[j] < ev[left])
{
++i; ev.swap(i,j);
}
}
//O elemento do limite da partição é trocado com o pivô. Necessariamente isso
//é apenas uma reatribuição quando a lista já se encontra ordenada.
ev.swap(left,i);
return i;
}

Mais conteúdo relacionado

Destaque

Area Profiles
Area ProfilesArea Profiles
Area Profiles
chouwinn
 
Presentación ventajas y desventajas de las redes sociales
Presentación ventajas y desventajas de las redes socialesPresentación ventajas y desventajas de las redes sociales
Presentación ventajas y desventajas de las redes sociales
Pierrette Amador
 
(Apresentação 8º salão de ensino ufrgs - 02-10-2012 - revisado)
(Apresentação   8º salão de ensino ufrgs - 02-10-2012 - revisado)(Apresentação   8º salão de ensino ufrgs - 02-10-2012 - revisado)
(Apresentação 8º salão de ensino ufrgs - 02-10-2012 - revisado)
Educação Online e em Rede
 
Apresentação abertura emeem leandro diniz
Apresentação abertura emeem   leandro dinizApresentação abertura emeem   leandro diniz
Apresentação abertura emeem leandro diniz
EMFoco
 
การศึกษารายกรณีโดยการบูรณาการเทคโนโลยีในชั้นเรียนภาษาอังกฤษในฐานะภาษาต่างประเทศ
การศึกษารายกรณีโดยการบูรณาการเทคโนโลยีในชั้นเรียนภาษาอังกฤษในฐานะภาษาต่างประเทศการศึกษารายกรณีโดยการบูรณาการเทคโนโลยีในชั้นเรียนภาษาอังกฤษในฐานะภาษาต่างประเทศ
การศึกษารายกรณีโดยการบูรณาการเทคโนโลยีในชั้นเรียนภาษาอังกฤษในฐานะภาษาต่างประเทศ
moopui
 
Miniquest: a nutrición
Miniquest: a nutriciónMiniquest: a nutrición
Miniquest: a nutrición
oicorojuara
 

Destaque (20)

Análise de Algoritmos - Recursividade
Análise de Algoritmos - RecursividadeAnálise de Algoritmos - Recursividade
Análise de Algoritmos - Recursividade
 
Análise de Algoritmos - Análise Assintótica
Análise de Algoritmos - Análise AssintóticaAnálise de Algoritmos - Análise Assintótica
Análise de Algoritmos - Análise Assintótica
 
Area Profiles
Area ProfilesArea Profiles
Area Profiles
 
TAREA DE ESTÉTICA UASB-GALO SILVA
TAREA DE ESTÉTICA UASB-GALO SILVATAREA DE ESTÉTICA UASB-GALO SILVA
TAREA DE ESTÉTICA UASB-GALO SILVA
 
Mi album
Mi albumMi album
Mi album
 
Presentación ventajas y desventajas de las redes sociales
Presentación ventajas y desventajas de las redes socialesPresentación ventajas y desventajas de las redes sociales
Presentación ventajas y desventajas de las redes sociales
 
(Apresentação 8º salão de ensino ufrgs - 02-10-2012 - revisado)
(Apresentação   8º salão de ensino ufrgs - 02-10-2012 - revisado)(Apresentação   8º salão de ensino ufrgs - 02-10-2012 - revisado)
(Apresentação 8º salão de ensino ufrgs - 02-10-2012 - revisado)
 
203 caminhar
203 caminhar203 caminhar
203 caminhar
 
SOCIOLOGÍA
SOCIOLOGÍASOCIOLOGÍA
SOCIOLOGÍA
 
Reconocimiento 100412 114
Reconocimiento 100412 114Reconocimiento 100412 114
Reconocimiento 100412 114
 
Usuarios mas activos de las redes sociales
Usuarios mas activos de las redes socialesUsuarios mas activos de las redes sociales
Usuarios mas activos de las redes sociales
 
Apresentação abertura emeem leandro diniz
Apresentação abertura emeem   leandro dinizApresentação abertura emeem   leandro diniz
Apresentação abertura emeem leandro diniz
 
Introduction to Image Processing - Short Course - Part I
Introduction to Image Processing - Short Course - Part IIntroduction to Image Processing - Short Course - Part I
Introduction to Image Processing - Short Course - Part I
 
Tarea5 vilma
Tarea5  vilmaTarea5  vilma
Tarea5 vilma
 
Alice
AliceAlice
Alice
 
การศึกษารายกรณีโดยการบูรณาการเทคโนโลยีในชั้นเรียนภาษาอังกฤษในฐานะภาษาต่างประเทศ
การศึกษารายกรณีโดยการบูรณาการเทคโนโลยีในชั้นเรียนภาษาอังกฤษในฐานะภาษาต่างประเทศการศึกษารายกรณีโดยการบูรณาการเทคโนโลยีในชั้นเรียนภาษาอังกฤษในฐานะภาษาต่างประเทศ
การศึกษารายกรณีโดยการบูรณาการเทคโนโลยีในชั้นเรียนภาษาอังกฤษในฐานะภาษาต่างประเทศ
 
Mañe
MañeMañe
Mañe
 
Miniquest: a nutrición
Miniquest: a nutriciónMiniquest: a nutrición
Miniquest: a nutrición
 
Hardware y software
Hardware y softwareHardware y software
Hardware y software
 
Novo CâNtico
Novo CâNticoNovo CâNtico
Novo CâNtico
 

Mais de Michel Alves

Mais de Michel Alves (20)

Texture Synthesis: An Approach Based on GPU Use
Texture Synthesis: An Approach Based on GPU UseTexture Synthesis: An Approach Based on GPU Use
Texture Synthesis: An Approach Based on GPU Use
 
Intelligent Transfer of Thematic Harmonic Color Palettes
Intelligent Transfer of Thematic Harmonic Color PalettesIntelligent Transfer of Thematic Harmonic Color Palettes
Intelligent Transfer of Thematic Harmonic Color Palettes
 
A Framework for Harmonic Color Measures
A Framework for Harmonic Color MeasuresA Framework for Harmonic Color Measures
A Framework for Harmonic Color Measures
 
Effectiveness of Image Quality Assessment Indexes
Effectiveness of Image Quality Assessment IndexesEffectiveness of Image Quality Assessment Indexes
Effectiveness of Image Quality Assessment Indexes
 
Introduction to Kernel Functions
Introduction to Kernel FunctionsIntroduction to Kernel Functions
Introduction to Kernel Functions
 
About Perception and Hue Histograms in HSV Space
About Perception and Hue Histograms in HSV SpaceAbout Perception and Hue Histograms in HSV Space
About Perception and Hue Histograms in HSV Space
 
Color Harmonization - Results
Color Harmonization - ResultsColor Harmonization - Results
Color Harmonization - Results
 
Wave Simulation Using Perlin Noise
Wave Simulation Using Perlin NoiseWave Simulation Using Perlin Noise
Wave Simulation Using Perlin Noise
 
Similarity Maps Using SSIM Index
Similarity Maps Using SSIM IndexSimilarity Maps Using SSIM Index
Similarity Maps Using SSIM Index
 
Qualifying Exam - Image-Based Reconstruction With Color Harmonization
Qualifying Exam - Image-Based Reconstruction With Color HarmonizationQualifying Exam - Image-Based Reconstruction With Color Harmonization
Qualifying Exam - Image-Based Reconstruction With Color Harmonization
 
TMS - Schedule of Presentations and Reports
TMS - Schedule of Presentations and ReportsTMS - Schedule of Presentations and Reports
TMS - Schedule of Presentations and Reports
 
Month Presentations Schedule - March/2015 - LCG/UFRJ
Month Presentations Schedule - March/2015 - LCG/UFRJMonth Presentations Schedule - March/2015 - LCG/UFRJ
Month Presentations Schedule - March/2015 - LCG/UFRJ
 
Color Palettes in R
Color Palettes in RColor Palettes in R
Color Palettes in R
 
Sigmoid Curve Erf
Sigmoid Curve ErfSigmoid Curve Erf
Sigmoid Curve Erf
 
Hue Wheel Prototype
Hue Wheel PrototypeHue Wheel Prototype
Hue Wheel Prototype
 
Cosine Curve
Cosine CurveCosine Curve
Cosine Curve
 
Triangle Mesh Plot
Triangle Mesh PlotTriangle Mesh Plot
Triangle Mesh Plot
 
Triangle Plot
Triangle PlotTriangle Plot
Triangle Plot
 
Capacity-Constrained Point Distributions :: Video Slides
Capacity-Constrained Point Distributions :: Video SlidesCapacity-Constrained Point Distributions :: Video Slides
Capacity-Constrained Point Distributions :: Video Slides
 
Capacity-Constrained Point Distributions :: Density Function Catalog
Capacity-Constrained Point Distributions :: Density Function CatalogCapacity-Constrained Point Distributions :: Density Function Catalog
Capacity-Constrained Point Distributions :: Density Function Catalog
 

Último

matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
CleidianeCarvalhoPer
 
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
LeloIurk1
 
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptxSlide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
edelon1
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
marlene54545
 
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdfGEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
RavenaSales1
 
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdfReta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
WagnerCamposCEA
 

Último (20)

matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
 
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
 
Projeto Nós propomos! Sertã, 2024 - Chupetas Eletrónicas.pptx
Projeto Nós propomos! Sertã, 2024 - Chupetas Eletrónicas.pptxProjeto Nós propomos! Sertã, 2024 - Chupetas Eletrónicas.pptx
Projeto Nós propomos! Sertã, 2024 - Chupetas Eletrónicas.pptx
 
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptxSlide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
 
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfPROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.
 
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfProjeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
 
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdfGEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
 
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
 
Nós Propomos! Autocarros Elétricos - Trabalho desenvolvido no âmbito de Cidad...
Nós Propomos! Autocarros Elétricos - Trabalho desenvolvido no âmbito de Cidad...Nós Propomos! Autocarros Elétricos - Trabalho desenvolvido no âmbito de Cidad...
Nós Propomos! Autocarros Elétricos - Trabalho desenvolvido no âmbito de Cidad...
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
 
Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º ano
 
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdfReta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
 
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para criançasJogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.ppt
 
Aula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIXAula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIX
 

Merge & Quick Algorithms - Implementation in C++

  • 1. /** * Método merge sort, ou ordenação por intercalação, é um exemplo de algoritmo * de ordenação do tipo dividir-para-conquistar. Sua idéia básica é que é muito * fácil criar uma sequência ordenada a partir de duas outras também ordenadas. * Para isso, ele divide a sequência original em pares de dados, ordena-as; * depois as agrupa em sequências de quatro elementos, e assim por diante, * até ter toda a sequência dividida em apenas duas partes. O método MergeSort * rearranja o vetor v[BeginList..EndList-1] em ordem crescente. **/ void SortingAlgorithms::MergeSort(ElementVector& ev, int BeginList, int EndList) { if (BeginList < EndList -1) { int middle = (BeginList + EndList)/2; MergeSort(ev, BeginList, middle); MergeSort(ev, middle, EndList); Merges(ev, BeginList, middle, EndList); } } /** * Método auxiliar ao MergeSort que executa a intercalação das listas. * O método recebe vetores crescentes v[BeginList..Middle-1] e * v[Middle..EndList-1] e rearranja v[BeginList..EndList-1] em ordem crescente. **/ void SortingAlgorithms::Merges(ElementVector & ev, int BeginList, int Middle, int EndList) { int i, j, k; ElementVector w; //Executa um resize na lista de elementos auxiliar alocando o necessário para a //intercalação dos elementos. w.resize(EndList - BeginList); //Estabelecendo os limites para a intercalação i = BeginList; j = Middle; k = 0; //Verifica quem deve ser intercalado while( i < Middle && j < EndList) { if (ev[i] <= ev[j]) w[k++] = ev[i++]; else w[k++] = ev[j++]; } //Executa as intercalações finais. while(i < Middle) { w[k++] = ev[i++]; } while(j < EndList) { w[k++] = ev[j++]; } //Copia a lista auxiliar para a lista original for( i = BeginList; i < EndList; ++i) { ev[i] = w[i-BeginList]; } //Limpa a lista auxiliar ... w.clear(); }
  • 2. /** * Método de Ordenação QuickSort é um método de ordenação muito rápido e * eficiente, inventado por C.A.R. Hoare em 1960. O Quicksort é um algoritmo * de ordenação não-estável que adota a estratégia de divisão e conquista, * podendo sofrer degeneração no melhor caso e caso médio [nlogn] para o pior * caso [n^2]. Essa implementação pode ser encontrada no livro de Sedgewick. * O método rearranja o vetor v[p..r], com p <= r+1, de modo que ele fique * em ordem crescente. Esse método não se utiliza de um particionador explicito * e o pivô de verificação sempre é dado por um elemento central. **/ void SortingAlgorithms::QuickSort(ElementVector& ev, int BeginList, int EndList) { int i , j; Element c, t; if (BeginList < EndList) { c = ev[(BeginList + EndList) / 2]; i = BeginList; j = EndList; while (i <= j) { while (ev[i] < c) { ++i; } while (c < ev[j]) { --j; } if (i <= j) { t = ev[i], ev[i] = ev[j], ev[j] = t; ++i, --j; } } //Segmento onde ocorre a chamada recursiva ao método QuickSort(ev, BeginList, j); QuickSort(ev, i, EndList); } }
  • 3. /** * Método de ordenação quick sort que utiliza uma função de particionamento * da lista de elementos. Esse método utiliza um particionador explícito * porém seu pivo de verificação não é um elemento central previamente definido * e sim elementos que se encontram mais a esquerda de cada partição definida. **/ void SortingAlgorithms::QSort(ElementVector& ev, int left, int right) { int new_right; if (right > left) { new_right = Partition(ev, left, right); QSort(ev,left, new_right - 1); QSort(ev,new_right + 1,right); } return; } /** * Método auxiliar ao QSort que executa particionamento da lista de elementos. **/ int SortingAlgorithms::Partition(ElementVector& ev, int left, int right) { register int i, j; i = left; for (j = left + 1; j <= right; j++) { if (ev[j] < ev[left]) { ++i; ev.swap(i,j); } } //O elemento do limite da partição é trocado com o pivô. Necessariamente isso //é apenas uma reatribuição quando a lista já se encontra ordenada. ev.swap(left,i); return i; }