Ir para conteúdo
Fórum Script Brasil
  • 0

Mergesort em paralelo


Lucas Daniel

Pergunta

1 resposta a esta questão

Posts Recomendados

  • 0

Pessoal abaixo o mergesort .... agora preciso de ajuda para paralelizar ele ... tipo vou paralelizar a parte onde divide o vetor em partes .... +- isso ?

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

//Autores: Lucas Daniel Küster Vieira, Ronneesley

int main(int argc, char *argv[])

{

srand(time(NULL));

int i, tam = 20;

int vet[tam];

for (i=0; i<tam; i++){

vet = rand() % 50;

}

printf("Vetor desordenado:\n\n");

for (i = 0; i < tam; i++){

if (i != 0) printf(", ");

printf("%d", vet);

}

//chama o método

ordenarMergeSortIterativa(tam, vet);

printf("\n\nVetor ordenado: \n\n");

for (i = 0; i < tam; i++){

if (i != 0) printf(", ");

printf("%d", vet);

}

printf("\n\n");

system("PAUSE");

return 0;

}

void intercala(int p, int q, int r, int v[]){

int i, j, k, *w;

w = malloc( (r - p) * sizeof (int) );

i = p;

j = q;

k = 0;

while (i < q && j < r){

if (v <= v[j])

w[k++] = v[i++];

else

w[k++] = v[j++];

}

while (i < q) w[k++] = v[i++];

while (j < r) w[k++] = v[j++];

for (i = p; i < r; i++)

v = w[i - p];

free(w);

}

int ordenarMergeSortIterativa(int n, int v[]){

int p, r, b = 1;

while (b < n){

p = 0;

while (p + b < n){

r = p + 2 * b;

if (r > n) r = n;

intercala(p, p + b, r, v);

p = p + 2 * b;

}

b = 2 * b;

}

}

Editado por Lucas Daniel
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...