#include <stdio.h>
#include<stdafx.h>
#include<iostream>
#include <stdlib.h>
#include <time.h>
#include "omp.h"
using namespace std;
//int count=0;
void swap(int &a, int &b)//
{
int tmp;
tmp = a;
a = b;
b = tmp;
}
void quicksort(int *A,int l, int u)
{
int i,m,k;
if (l >= u) return;
m = l;
for (i = l+1; i <= u; i++)
if (A[i] < A[l])/*不管是选第一个元素作为pivot还是最后一个作为pivot,假如我们想得到的是从小到大的序列,那么最坏的输入
//情况就是从大到小的;如果我们想得到从大到小的序列,那个最坏的输入情况就是从小到大的序列*/
swap(A[++m], A[i]);
swap(A[l], A[m]);
quicksort(A,l, m-1);
quicksort(A,m+1, u);
}
void main(int argc, char *argv)
{
omp_set_num_threads(2);//----------------设置线程数为2,因为是双核的CPU
int k=0,i=0;
int m=0,n=0;
double cost=0;
int len=10000;
int short_len=len/2;
int B[10000],C[10000],D[5000],E[5000];//--------将B[]分为两个小的数组,并行的对他们调用快速排序算法
#pragma omp parallel default(non
OpenMp之快速排序
最新推荐文章于 2024-05-05 13:19:20 发布