⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 quiksort.c

📁 用OPENMP编写的 并行实现快速排序的程序!
💻 C
字号:
#include<stdio.h>
#include<math.h>
#include <omp.h>
#define N 200
#define NUM_THREADS 2 
int rand(void);

int partition(int b[],int,int);
void quicksort(int b[],int,int);

void main(){
	int a[N];
	int i;
	omp_set_num_threads(NUM_THREADS);

#pragma omp parallel 
	{	
		int id; 
		id = omp_get_thread_num(); 
		for(i=id;i<N;i=i+NUM_THREADS){
			a[i]=rand()%200;
			printf("%4d",a[i]);

		}
	}

	quicksort(a,1,N-1);
	for(i=1;i<N;i++){
		printf("\n");
		printf("%4d",a[i]);
	}
}

//#pragma omp parallel 



void quicksort(int r[], int s,int t){
	int i;
	if(s<t){
		i=partition(r,s,t);
#pragma omp parallel sections   
		{    
#pragma omp section  
			{
				quicksort(r,s,i-1);
			}
#pragma omp section 
			{
				quicksort(r,i+1,t);
			}
		}
	}
}


int partition(int r[],int low,int high){
	r[0]=r[low];
	while(low<high){
		while(low<high&&r[0]<r[high]) high--;
		if(low<high){
			r[low]=r[high];
			low++;
		}
		while(low<high&&r[0]>r[low]) low++;
		if(low<high){
			r[high]=r[low];
			high--;
		}

	}
	r[low]=r[0];
	return low;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -