C艹的睡眠排序
我个蒟蒻加大聪明想出的办法
给个赞嘛,求求了
hh
原理与流程
睡眠排序的主要逻辑是构造n个线程,它们和这n个数一一对应。初始化后,线程们开始睡眠,等到对应的那么多个时间单位后各自醒来,然后输出对应的数。这样最小的数对应的线程最早醒来,这个数最早被输出。等所有线程都醒来,排序就结束了。
时间复杂度
你想不到的O(n)!
aeeeeeee……
是不是十分简单?
代码来了!
Code(C++)
AC Editor运行不了
#include<iostream>
#include<thread>
#include<cstdlib>
#include<windows.h>
using namespace std;
void run(int seocnds)
{
Sleep(seocnds*10);
cout<<seocnds<<' ';
}
int main()
{
int arr[]={ //给定10个数
1,3,5,7,9,
2,4,6,8,10
};
for (const auto& e : arr) thread(run,e).detach();
Sleep(1000);
cout<<endl;
system("pause");
return 0;
}
小伙子,很有精神,明年图灵奖就是你
##
你怎么知道我是小伙子QWQ
本质上是弱化版的桶排序。
差不多
Orz
Orz