// EnumSort.cpp : 定义控制台应用程序的入口点。
//枚举排序
/*
枚举排序(Enumeration Sort)是一种最简单的排序算法,通常也称为秩排序(Rank Sort)。
该算法的具体思想是(假设按关键字递增排序),对每一个待排序的元素统计小于它的所有元素的个数,从而得到该元素最终处于序列中的位置。
假定待排序的n个数存在a[1]…a[n]中。首先将a[1]与a[2]…a[n]比较,记录比其小的数的个数,令其为k,
a[1]就被存入有序的数组b[1]…b[n]的b[k+1]位置上;然后将a[2]与a[1],a[3]…a[n]比较,记录比其小的数的个数,依此类推。
这样的比较操作共n(n-1)次,所以串行秩排序的时间复杂度为O(n2)。
*/
#include "stdafx.h"
#include <Windows.h>
#include <omp.h>
#include <time.h>
#include <iostream>
using namespace std; #define NUM_THREADS 2
#define maxN 100000
int _tmain(int argc, _TCHAR* argv[])
{
int i,j,k;
clock_t t1,t2;
omp_set_num_threads(NUM_THREADS);
int a[maxN];//={0,4,9,6,1,5,3,8,7,2};
int b[maxN];
//并行——————————;
for (i=0;i<maxN;i++)
{
a[i]=maxN-i;
}
t1=clock();
#pragma omp parallel sections private(i,j,k)
{
/*#pragma omp for
for (i=0;i<maxN;i++)
{
k=0;
for (j=0;j<maxN;j++)
{
if (a[i]>a[j])
{
k++;
}
}
b[k]=a[i];
}*/
#pragma omp section
{
for (i=omp_get_thread_num();i<maxN;i=i+NUM_THREADS)
{
k=0;
for (j=0;j<maxN;j++)
{
if (a[i]>a[j])//找出数组中比自己小的元素的个数k;
{
k++;
}
}
b[k]=a[i];//另外建立一个数组,将其放到第k+1处;
}
}
#pragma omp section
{
for (i=omp_get_thread_num();i<maxN;i=i+NUM_THREADS)
{
k=0;
for (j=0;j<maxN;j++)
{
if (a[i]>a[j])
{
k++;
}
}
b[k]=a[i];
}
}
}
t2=clock();
cout<<"并行时间:"<<t2-t1<<endl;
for (i=99900;i<maxN;i++)
{
cout<<b[i]<<" ";
}
cout<<endl; //串行————————————;
for (i=0;i<maxN;i++)
{
a[i]=maxN-i;
}
t1=clock();
for (i=0;i<maxN;i++)
{
k=0;
for (j=0;j<maxN;j++)
{
if (a[i]>a[j])
{
k++;
}
}
b[k]=a[i];
}
t2=clock();
cout<<"串行时间:"<<t2-t1<<endl;
for (i=99900;i<maxN;i++)
{
cout<<b[i]<<" ";
}
cout<<endl;
system("pause");
return 0;
}

运行结果如下图:(相对加速比:1.72)

OpenMP之枚举排序的更多相关文章

  1. 枚举+排序|神奇算式|2014年蓝桥杯A组题解析第三题-fishers

    标题:神奇算式 由4个不同的数字,组成的一个乘法算式,它们的乘积仍然由这4个数字组成. 比如: 210 x 6 = 1260 8 x 473 = 3784 27 x 81 = 2187 都符合要求. ...

  2. OpenMP 奇偶换排序

    ▶ 使用 OpenMP 进行奇偶交换排序 ● 代码 #include <stdio.h> #include <stdlib.h> #include <omp.h> ...

  3. Word Amalgamation(枚举 + 排序)

    Word Amalgamation Time Limit: 1 Sec  Memory Limit: 64 MB Submit: 373  Solved: 247 Description In mil ...

  4. 基于 OpenMP 的奇偶排序算法的实现

    代码: #include <omp.h> #include <iostream> #include <cstdlib> #include <ctime> ...

  5. sicily 1046. Plane Spotting(排序求topN)

    DescriptionCraig is fond of planes. Making photographs of planes forms a major part of his daily lif ...

  6. 【uva 1312】Cricket Field(算法效率--技巧枚举)

    题意:一个 L*R 的网格里有 N 棵树,要求找一个最大空正方形并输出其左下角坐标和长.(1≤L,R≤10000, 0≤N≤100) 解法:枚举空正方形也就是枚举空矩阵,先要固定一个边,才好继续操作. ...

  7. USACO(含training section)水题合集[5/未完待续]

    (1) USACO2.1 Ordered Fractions 枚举 排序即可,注意1/1 #include<iostream> #include<cstdio> #includ ...

  8. CUBRID学习笔记 25 数据类型2

    ---恢复内容开始--- 6枚举类型 语法 <enum_type> : ENUM '(' <char_string_literal_list> ')' <char_str ...

  9. uva331 - Mapping the Swaps

    Mapping the Swaps Sorting an array can be done by swapping certain pairs of adjacent entries in the ...

随机推荐

  1. DateTime.Compare用法

    DateTime.Compare(t1,t2)比较两个日期大小,排前面的小,排在后面的大,比如:2011-2-1就小于2012-3-2返回值小于零:  t1 小于 t2. 返回值等于零 : t1 等于 ...

  2. was部分更新

    在WAS中,应用的配置是从config/cells....目录下读取:而资源从/installedApps目录下读取 故当配置文件(例web.xml)发生改变时,只更新应用程序资源文件/install ...

  3. Git常用命令学习(2)

    1):git branch -v --查看每一个分支的最后一次提交2):git branch --merged 与 --no-merged 这两个有用的选项可以过滤这个列表中已经合并或尚未合并到当前分 ...

  4. 在VisualStudio2012环境下安装ArcEngine 10.0

    因为ArcEngine10.0默认对应的开发工具为VS2010,在安装了VS2012的情况下安装ArcEngine10.0(注意:我自己的环境为VS2012和ArcEngine10.0,对于其他版本在 ...

  5. Git 在团队中的最佳实践--如何正确使用Git Flow[转]

    原文地址:http://www.cnblogs.com/cnblogsfans/p/5075073.html Git的优点 Git的优点很多,但是这里只列出我认为非常突出的几点. 由于是分布式,所有本 ...

  6. Ant: Class not found: javac1.8

    今天用ant,在选择build.xml,run as ant build后出错Ant: Class not found: javac1.8 分析问题:是否是eclipse中的ant版本和java的版本 ...

  7. ff

    public class MyListenerProcessor implements BeanPostProcessor { @Override public Object postProcessB ...

  8. 搭建高可用mongodb集群(三)—— 深入副本集内部机制

    在上一篇文章<搭建高可用mongodb集群(二)—— 副本集> 介绍了副本集的配置,这篇文章深入研究一下副本集的内部机制.还是带着副本集的问题来看吧! 副本集故障转移,主节点是如何选举的? ...

  9. 在iOS中使用Phonegap防止Webview被上下拖动

    在使用PhoneGap制作App的时候,iOS作为承载App页面的容器的Webview,在手指向下或者向上滑动屏幕时,除了页面本身的滚动外,还经常会看到整体页面底部和屏幕底部被拖动出黑屏 为了防止这一 ...

  10. UICollectionView swift2模版

    class testViewController:BaseViewController,UICollectionViewDataSource, UICollectionViewDelegate , U ...