Linux запускает проект, который одновременно выполняет сортировку вставки для 20 групп чисел 1e6. Я могу сделать это дляLinux

Ответить
Гость
 Linux запускает проект, который одновременно выполняет сортировку вставки для 20 групп чисел 1e6. Я могу сделать это для

Сообщение Гость »


Это мой код.
Основной поток выполняет пять типов потоков
и каждый из этих пяти потоков имеет по 20 наборов случайных данных.
Происходит перенаправление.
Данные также добавляются к тексту. Введите здесь описание изображения.
Если данные имеют размер 1e6, сортировка даже не начинается, потому что демона не видно на заднем плане

Код: Выделить всё

#define _CRT_SECURE_NO_WARNINGS

#include
#include
using namespace std;
#include
//#include
//#include
#include
#include
#include
#include

#include
#include

#include 
#include 
#include 
#include 
#include

#define ll long long
#define endl "\n"
//#define int long long
const ll inf = 1e9;
const ll MOD = 0x77777777737;
const int maxn = 5e5+5;

void insert_sort(vector& arr)
{
//printf("a sort is running!\n");fflush(stdout);
for (int i = 1; i < arr.size(); i++)
{
int aim = arr[i];
for (int j = i; j >= 0; j--)
{
if (j == 0 || arr[j - 1]  aim)
arr[j] = arr[j - 1];
}
}
}

int nk[6]= {0,1e6,2e6,3e6,4e6,5e6};
//int nk[6]= {0,1e3,2e3,3e3,4e3,5e3};
void* solve(void* arg)
{
//printf("solve for %d is running!\n",*(int*)arg);fflush(stdout);
int n = *(int*)arg;
vectorarr(n);
srand(time(NULL));
for (int i = 0; i < n; i++)
{
arr[i] = rand();
}
clock_t ct = clock();
insert_sort(arr);
ct = clock() - ct;
//printf("%ld\n",ct);
FILE *fp;
if(n==nk[1])
{
fp = fopen("insert_sort_1e6.txt","a");
}
else if(n==nk[2])
{
fp = fopen("insert_sort_2e6.txt","a");
}
else if(n==nk[3])
{
fp = fopen("insert_sort_3e6.txt","a");
}
else if(n==nk[4])
{
fp = fopen("insert_sort_4e6.txt","a");
}
else if(n==nk[5])
{
fp = fopen("insert_sort_5e6.txt","a");
}
if(fp == NULL)
{
printf("error fp\n");fflush(stdout);
}
fprintf(fp,"%ld\n",ct);
fflush(fp);
fclose(fp);
}

void* thread_func(void* arg)
{
printf("pthread for %d is running!\n",*(int*)arg);fflush(stdout);
pthread_t sub_threads[21]={0};
//int t = 20; 这个竟然会被共享??
for(int i=1;i

Источник: [url]https://stackoverflow.com/questions/78154869/linux-runs-project-that-is-insert-sorting-for-20-groups-of-1e6-numbers-concurren[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»