伙计们,我正在考虑一种排序方法,它称为睡眠排序
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
int main(int c, char **v)
{
while (--c > 1 && !fork());
sleep(c = atoi(v[c]));
printf("%d\n", c);
wait(0);
return 0;
}
我不明白一件事,c ++ 11中的fork等价物是什么?我的意思是新版本的c ++?我可以写这样的等待函数
void wait ( int seconds ){
clock_t endwait;
endwait = clock () + seconds * CLOCKS_PER_SEC ;
while (clock() < endwait) {}
}
但是 fork() 呢?我尝试了以下代码
#include<iostream>
#include<time.h>
using namespace std;;
void wait ( int seconds ){
clock_t endwait;
endwait = clock () + seconds * CLOCKS_PER_SEC ;
while (clock() < endwait) {}
}
void Sort(int c,int a[])
{
while(--c>1)
{
wait(c=a[c]);
cout<<c<<" ";
}
}
int main()
{
int a[]={1, 3, 2, 11, 6, 4};
int c=5;
Sort(c,a);
wait(0);
return 0;
}
但它没有给我排序的输出,它输出像 6 4 1 并完成,所以请告诉我如何纠正它?