Buscar

ORDENAÇÃO MERGE_SORT

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

#include <cstdlib>
#include <iostream>
using namespace std;
void merge(int vetor[], int inicio, int meio, int fim){
 int tamanho = fim - inicio + 1;
 int i, j, k, posicao;
 	int temp[tamanho];
 	for (i=inicio; i<=fim; i++) {
		temp[i] = vetor[i];
	}
	for (i=inicio, j=meio+1, posicao=inicio; (i <= meio) && (j <= fim); posicao++) {
 if(temp[i]<temp[j]){ 
 vetor[posicao] = temp[i];
 i ++;
 }
 else{
 vetor[posicao] = temp[j];
 j++;
 }
	}
 if(i == meio+1){
 for(k=j; k<=fim; k++){
 vetor[posicao] = temp[k];
 posicao++;
 }
 }
 else {
 for(k=i; k<=meio; k++){
 vetor[posicao] = temp[k];
 posicao++;
 }
 }
}
void mergeSort(int v[], int esq, int dir){
 int meio;
 if(dir>esq){
 meio = (dir+esq)/2;
 mergeSort(v, esq, meio);
 mergeSort(v, meio+1, dir);
 merge(v, esq, meio, dir);
 }
}
int main(int argc, char *argv[])
{
 int vetor[5]={12,2,24,1,13},i;
 
 mergeSort(vetor,0,5);
 for(i=0;i<5;i++) cout<<vetor[i]<<" ";
 
 cout<<endl;
 
 system("PAUSE");
 return EXIT_SUCCESS;
}

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais