甘肃建设厅官方网站,网站建设建网站年轻的母亲,跨站攻击 wordpress,专门做特医食品的网站今日在微博看到如此奇妙的代码。竟然还有新的sort算法#xff0c;对于我这样的渣渣必须研究一下#xff0c;代码例如以下#xff1a; #!/bin.bash
function f()
{sleep $1 //sleep 这么多secho $1
}while [ -n $1 ] //第一个參数不为空… 今日在微博看到如此奇妙的代码。竟然还有新的sort算法对于我这样的渣渣必须研究一下代码例如以下 #!/bin.bash
function f()
{sleep $1 //sleep 这么多secho $1
}while [ -n $1 ] //第一个參数不为空
dof $1 //后台执行相当于fork一个进程去执行f, 父进程同一时候继续下去shift //输入參数左移。也即覆盖掉第一个參数
donewait//父进程等待子进程都结束了再继续往下否则子进程成为孤立进程 SleepSort。一看代码看到sleep大致就明确意图了利用sleep以及多线程并发。依照sleep大小排序并发来print排序 这个算法本质上是并发的算法运用了sleep函数同一时候几个进程并发并发是指几个进程同一时间段同一时候运行一个时刻还是要排个序逐个运行的而并行是须要硬件支持的真正的同一时刻多个进程同一时候运行。 于是乎本菜鸟打算C语言搞一搞由于借助linux的fork函数来模拟 shell里面 的后台执行功能。另外上述代码接口不太好最好是传递数组參数这样的的于是我写个接口比較general的C版 另外这里面要注意就是shell wait等前面子进程所有结束父进程才继续。我用C总是输出第一个数父进程就返回了差了C的文档才知道他是随意一个child返回父进程就返回了。因此多次wait 用个loop。 代码(*nix OS only)#include iostream
#include sys/wait.h
using namespace std;void f(int x)
{sleep(x);coutx ;
}
void SleepSort(int*a, int n)
{int status;pid_t pid;for(int i0;in;i){pidfork();if(pid0)//child process, return 0 pid{f(a[i]);return;}else//father process return pid0{;}}for(int i0;in;i)wait(NULL);//each wait one child process, then continue
}
int main()
{int a[]{6,2,5,8,5,4,7,1};SleepSort(a,8);
}依照这个思想。事实上不论什么并行的技术理论都能够实现sleepsort比如CUDAopenmp, mpi等等我这里弄个并发版本号。 另外确实要用最小单位s的sleep函数。略微注意一下就好了~~~ 以下博客说的比較清楚~~~ http://blog.csdn.net/changingivan/article/details/6966510 收到这个启示这个算法有个缺陷。假设排序的树interval非常小比如1.1 1.11这样的也可能有危急。最小sleep差比一次loop时间长是关键 今天一个马来人说非常崇拜中国的gymnastics我第一反应geometry, 后来才知道体操。。另外一个阿三教了我一点rude english之前一直问我whats up?这个是非常标准的美式口语.......今天竟然说了I need a chick, 我已開始以为是trick可是也说不通。他说假设说一个女生是chick是非常粗鲁的还有barbanic 也是粗鲁的意思。 Good night, bitch! Get your life 享受生活别那么书呆。Working hardno, hardly working. 转载于:https://www.cnblogs.com/gccbuaa/p/6897224.html