?? quiksort.c
字號(hào):
#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;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -