多线程生成随机数组+多线程快速排序(C++实现)
描述
这里对于对于每个快排递归过程都进行考量,如果对应的区域规模达到一定数值(也就是下面的代码中的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++实现)相关推荐
- 多线程生成随机数组+双线程归并排序(C++实现)
算法概述 动态数组生成 多线程随机数组生成 双线程归并排序 代码 #include <iostream> #include <thread> #include <ctim ...
- 输出英文字母java数组_JAVA语言之通过生成随机数组来转化为字母进行输出的类...
本文主要向大家介绍了JAVA语言之通过生成随机数组来转化为字母进行输出的类,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 今天又写了一个通过生成随机数组来转化为字母进行输出的类,但是 ...
- python生成随机数组_python3.x 生成3维随机数组实例
python3.x 生成3维随机数组实例 如下所示: import numpy as np a=np.random.randint(0,10,size=[3,3,3]) print(a) 以上这篇py ...
- java生成随机数组_JAVA生成随机数组10个数字并求和
JAVA生成随机数组10个数字并求和 本文最终结果大概是这样的',使用java技术随机生成10个数,然后填充一个数组并在消息框中显示数组内容,接着对数组求和输出,将结果显示在消息框中. 设计思路:可以 ...
- php 生成随机数组,利用php如何获取随机数组列表
利用php如何获取随机数组列表 发布时间:2021-02-11 19:07:52 来源:亿速云 阅读:70 作者:Leah 利用php如何获取随机数组列表?相信很多没有经验的人对此束手无策,为此本文总 ...
- c语言算卦:生成随机数组、逆序输出、循环
算卦原理这里不做阐述,根据以下步骤小白也可以进行占卜. 1.代码如下 #include <stdio.h> #include <stdlib.h> #include <t ...
- 数据结构第一课:希尔排序和选择排序的时间复杂度随机数组的生成
随机生成数组 #include <iostream> #include <algorithm> #include<ctime> #include<time.h ...
- 【PostgreSQL】GIN索引安装与使用 - 全模糊匹配/数组匹配,PG批量插入上万随机生成数据,随机生成字符串/数组
目录 环境 拓展库安装 生成随机假数据 查询使用GIN索引 GIN索引使用条件 参考 环境 PostgreSQL DBeaver 拓展库安装 打开SQL编辑器: 输入命令运行即可: CREATE EX ...
- JS 生成随机数/随机数组
生成范围内随机数 function rand(min,max) {return Math.floor(Math.random()*(max-min))+min; } 生成随机数组 简单的随机生成 fu ...
最新文章
- 基础才是重中之重~DictionaryK,V里V的设计决定的性能
- NLP:两种方法(自定义函数和封装函数)实现提取两人对话内容(***分隔txt文档),并各自保存为txt文档
- 区块链——配置和使用geth
- 如何测试 ASP.NET Core Web API
- r语言 回归分析 分类变量_R语言下的PSM分析分类变量处理与分析步骤
- 桂林电子计算机与信息安全学院,桂林电子科技大学计算机与信息安全学院网络空间安全保研...
- 华为nova 9系列曝光:全系标配骁龙778G 4G处理器
- 对DNN的一些高层架构设想
- 唤醒锁: 检测 Android* 应用中的 No-Sleep(无法进入睡眠)问题
- 基于B+树的学生信息管理系统
- HTML5格式问题,你遇到了吗?
- [No000072]Windows环境变量列表
- 《Spring 5 官方文档》18. Web MVC 框架(八)
- JAVA 方法知识总结
- Java支付宝订单查询
- 2020-02-29
- lua生成随机数,设置随机数种子
- 【Cartographer参数详解,调参,降低计算量调优笔记记录】
- 靠追热点出圈,网易传媒打造“爆款制造机2.0”
- opencv获取bbox