Skocz do zawartości

Zdjęcie
* * * * * 1 głosy

Insert sort w openmp

insert sort openmp programowanie c

1 odpowiedź w tym temacie
  • Zaloguj się, aby dodać odpowiedź
vince

    Nowy użytkownik

  • 28 postów
    • :
1
Neutralna

Napisano 11 marca 2013 - 18:30

#1

Witajcie.
Miał ktoś do czynienia z programowaniem równoległym w C z użyciem bibliotek OpenMP? Mam do napisania program sortowania przez wstawianie na wielu wątkach.

Na razie zaimplementowałem algorytm sekwencyjny i nie bardzo wiem jak go zrównoleglić:
 

#include <stdio.h>
#include <stdlib.h>
#include <omp.h>

int main()
{
	int N = 10;
       double X[10] = {0.4, -1.7, 2.2, 3.4, 2.2, -8.1, 9.2, -100, 99.01, 9};
	double klucz = 0;
	int j = 0;
	int i = 0;
	int c=0;

	for (c = 0; c<N; c++)
	printf("%.2f, ", X[c]);
	printf("\n");
	
	for (i=1;i<N;i++)
	{
		j=i;
		klucz=X[i];
		while ((X[j-1] >  klucz)&&(j>0))
		{
			X[j]=X[j-1];
			j--;
		}
		X[j]=klucz;
	}

	for (c = 0; c<N; c++)
	printf("%.2f, ", X[c]);
	printf("\n");

	return 0;
}

 

 


  • 0

Admin

    Administrator

  • 34 postów
    • Czas spędzony online: 38s
8
Neutralna

Napisano 12 marca 2013 - 10:58

#2

Nie bardzo mogę sobie wyobrazić jak można zrównoleglić sortowanie przez wstawianie.
Możesz spróbować tak, że każdy proces sprawdza w którym miejscu powinien znaleźć się posiadany przez niego element tablicy,a następnie zapisuje tę informację do nowej, pustej tablicy.

Ewentualnie dzielisz zbiór liczb, które chcesz sortować na podzbiory i te podzbiory dzielisz między procesy. Podobnym algorytmem opierającym się na insert sorcie jest shell sort. Może to jemu warto się przyjrzeć.


  • 0





Podone tematy Collapse

  Temat Forum Autor Podsumowanie Ostatni post

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych