睡眠排序(整活向)

刚学了一丢丢的c++多线程知识,想起来以前学排序算法时候听闻过的睡眠排序法,迫不及待实现一下

基本思路就是为每一个数据都创建一个线程,每一个线程中执行的任务就是睡眠(SLEEP)数据大小的时间,由于Sleep函数是单位是毫秒,为了拉开明显差距,睡眠数据大小乘100的时间

 1 #include<iostream>
 2 #include<vector>
 3 #include<thread>
 4 #include<string>
 5 #include<algorithm>
 6 #include<Windows.h>
 7 using namespace std;
 8 int main()
 9 {    
10     int B[5] = { 4,1,2,10,8 };
11     vector<int>A(B,B+5);
12     thread th[5];
13     for (int i = 0; i < A.size(); i++)
14     {
15         th[i] = thread([](int N){Sleep(N*100); cout << N << endl; },A[i]);
16     }
17     for (int i = 0; i < A.size(); i++)
18     {
19         th[i].join();
20     }
21     return 0;
22 }

运行后就可以看到控制台里由大到小的数字慢慢一个一个被打印出来

posted @ 2023-07-10 19:10  凪风sama  阅读(56)  评论(0编辑  收藏  举报