描述

这里对于对于每个快排递归过程都进行考量,如果对应的区域规模达到一定数值(也就是下面的代码中的MINLEN),设置这个,主要是考虑到对应的电脑的cpu的核数。如果申请的线程数大于对应的CPU核数的时候,就是没有意义的,反而有可能导致效率会降低。

代码

#include <iostream>
using namespace std;
#include <Windows.h>
#include <ctime>
#include <random>
#include <thread>
#include <vector>int *a;
int N;
const int MINLEN = 120000;void random_test(int begin, int end) {srand((unsigned)time(NULL) + begin);for (int i = begin; i < end; ++i) {a[i] = rand() % N;}
}void sort(int s, int e) {if (s >= e)return;int i = s, j = e, k = a[s];while (i < j) {while (i < j && a[j] >= k)--j;if (i < j) {a[i] = a[j];}while (i < j && a[i] <= k)++i;if (i < j) {a[j] = a[i];}}a[i] = k;vector<thread> vt;if (i - s >= MINLEN)vt.push_back(thread(sort, s, i - 1));else sort(s, i - 1);if (e - i >= MINLEN)vt.push_back(thread(sort, i + 1, e));else sort(i + 1, e);for (int i = 0; i < vt.size(); ++i) vt[i].join();
}int main() {vector<thread> vt;N = 1000000;a = new int[N];int T = 5;int st, et;st = clock();for (int i = 0; i < T; ++i)vt.push_back(thread(random_test, i * N / T, (i + 1) * N / T));for (int i = 0; i < T; ++i)vt[i].join();et = clock();double ct = (et - st) / 1000.0;st = clock();sort(0, N-1);et = clock();/*for (int i = 0; i < N; ++i) cout << a[i] << " ";cout << endl;*/cout << "Sorting uses " << (et - st) / 1000.0 << " second(s)" << endl;cout << "Creating the random array uses " << ct << " second(s)" << endl;system("pause");
}

多线程生成随机数组+多线程快速排序(C++实现)相关推荐

  1. 多线程生成随机数组+双线程归并排序(C++实现)

    算法概述 动态数组生成 多线程随机数组生成 双线程归并排序 代码 #include <iostream> #include <thread> #include <ctim ...

  2. 输出英文字母java数组_JAVA语言之通过生成随机数组来转化为字母进行输出的类...

    本文主要向大家介绍了JAVA语言之通过生成随机数组来转化为字母进行输出的类,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 今天又写了一个通过生成随机数组来转化为字母进行输出的类,但是 ...

  3. python生成随机数组_python3.x 生成3维随机数组实例

    python3.x 生成3维随机数组实例 如下所示: import numpy as np a=np.random.randint(0,10,size=[3,3,3]) print(a) 以上这篇py ...

  4. java生成随机数组_JAVA生成随机数组10个数字并求和

    JAVA生成随机数组10个数字并求和 本文最终结果大概是这样的',使用java技术随机生成10个数,然后填充一个数组并在消息框中显示数组内容,接着对数组求和输出,将结果显示在消息框中. 设计思路:可以 ...

  5. php 生成随机数组,利用php如何获取随机数组列表

    利用php如何获取随机数组列表 发布时间:2021-02-11 19:07:52 来源:亿速云 阅读:70 作者:Leah 利用php如何获取随机数组列表?相信很多没有经验的人对此束手无策,为此本文总 ...

  6. c语言算卦:生成随机数组、逆序输出、循环

    算卦原理这里不做阐述,根据以下步骤小白也可以进行占卜. 1.代码如下 #include <stdio.h> #include <stdlib.h> #include <t ...

  7. 数据结构第一课:希尔排序和选择排序的时间复杂度随机数组的生成

    随机生成数组 #include <iostream> #include <algorithm> #include<ctime> #include<time.h ...

  8. 【PostgreSQL】GIN索引安装与使用 - 全模糊匹配/数组匹配,PG批量插入上万随机生成数据,随机生成字符串/数组

    目录 环境 拓展库安装 生成随机假数据 查询使用GIN索引 GIN索引使用条件 参考 环境 PostgreSQL DBeaver 拓展库安装 打开SQL编辑器: 输入命令运行即可: CREATE EX ...

  9. JS 生成随机数/随机数组

    生成范围内随机数 function rand(min,max) {return Math.floor(Math.random()*(max-min))+min; } 生成随机数组 简单的随机生成 fu ...

最新文章

  1. 基础才是重中之重~DictionaryK,V里V的设计决定的性能
  2. NLP:两种方法(自定义函数和封装函数)实现提取两人对话内容(***分隔txt文档),并各自保存为txt文档
  3. 区块链——配置和使用geth
  4. 如何测试 ASP.NET Core Web API
  5. r语言 回归分析 分类变量_R语言下的PSM分析分类变量处理与分析步骤
  6. 桂林电子计算机与信息安全学院,桂林电子科技大学计算机与信息安全学院网络空间安全保研...
  7. 华为nova 9系列曝光:全系标配骁龙778G 4G处理器
  8. 对DNN的一些高层架构设想
  9. 唤醒锁: 检测 Android* 应用中的 No-Sleep(无法进入睡眠)问题
  10. 基于B+树的学生信息管理系统
  11. HTML5格式问题,你遇到了吗?
  12. [No000072]Windows环境变量列表
  13. 《Spring 5 官方文档》18. Web MVC 框架(八)
  14. JAVA 方法知识总结
  15. Java支付宝订单查询
  16. 2020-02-29
  17. lua生成随机数,设置随机数种子
  18. 【Cartographer参数详解,调参,降低计算量调优笔记记录】
  19. 靠追热点出圈,网易传媒打造“爆款制造机2.0”
  20. opencv获取bbox

热门文章

  1. Spring MVC注解故障追踪记
  2. 云栖科技评论NO.2 | 张学友演唱会逃犯集中落网,真正的“神捕”其实是AI
  3. 对缓存击穿的一点思考
  4. windows系统命令行下常用命令收集
  5. ceph学习笔记之七 数据平衡
  6. 为什么说能源管理是分布式光伏发电的突破口?
  7. iOS私有属性的访问与修改
  8. I/O多路转接之 select
  9. 获取本地的IP地址(内网)
  10. java if-then和if-then-else语句(翻译自Java Tutorials)