みんな私は1つのソート方法を考えています、それはスリープソートと呼ばれます
#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;
}
私は1つのことを理解していません.C ++ 11でフォークに相当するものは何ですか?私は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のように出力されて終了するので、修正方法を教えてください。