以时间高效的方式在 C 中排序
Sequences in C in a time efficient manner
我正在做一个在每个时间步更新的模拟。我几乎 'kill' 我的网格中的虚拟有机体(它是一个细胞自动机)在 20000 个时间步。我想每杀死 200 次就在 killing_time - 10000
和 killing_time - 100
处注销数据。现在我可以写一个 for 循环并像这样从 1 迭代到 200
for(i=1; i<=200; i++)
{
if(Time%(i*killing_time-10000)==0 || Time%(i*killing_time-100)==0)
{
等等。但是我必须在每个时间步从 1 循环到 200 并进行计算。我如何以智能的方式做到这一点?布拉姆
据我了解你的问题,这可能是这样的......
/**
gcc -std=c99 -o prog_c prog_c.c \
-pedantic -Wall -Wextra -Wconversion \
-Wc++-compat -Wwrite-strings -Wold-style-definition -Wvla \
-g -O0 -UNDEBUG -fsanitize=address,undefined
**/
#include <stdio.h>
void
simulate(void)
{
const int killing_period=20000;
int killing_time=killing_period;
int Time=1;
for(int kill_event=1; kill_event<=200; ++kill_event)
{
for(; Time<killing_time; ++Time)
{
if(Time==(killing_time-10000) || Time==(killing_time-100))
{
printf("display at %d\n", Time);
}
// recompute the grid here
}
printf("kill at %d\n", Time);
killing_time+=killing_period;
}
printf("DONE\n");
}
int
main(void)
{
simulate();
return 0;
}
我正在做一个在每个时间步更新的模拟。我几乎 'kill' 我的网格中的虚拟有机体(它是一个细胞自动机)在 20000 个时间步。我想每杀死 200 次就在 killing_time - 10000
和 killing_time - 100
处注销数据。现在我可以写一个 for 循环并像这样从 1 迭代到 200
for(i=1; i<=200; i++)
{
if(Time%(i*killing_time-10000)==0 || Time%(i*killing_time-100)==0)
{
等等。但是我必须在每个时间步从 1 循环到 200 并进行计算。我如何以智能的方式做到这一点?布拉姆
据我了解你的问题,这可能是这样的......
/**
gcc -std=c99 -o prog_c prog_c.c \
-pedantic -Wall -Wextra -Wconversion \
-Wc++-compat -Wwrite-strings -Wold-style-definition -Wvla \
-g -O0 -UNDEBUG -fsanitize=address,undefined
**/
#include <stdio.h>
void
simulate(void)
{
const int killing_period=20000;
int killing_time=killing_period;
int Time=1;
for(int kill_event=1; kill_event<=200; ++kill_event)
{
for(; Time<killing_time; ++Time)
{
if(Time==(killing_time-10000) || Time==(killing_time-100))
{
printf("display at %d\n", Time);
}
// recompute the grid here
}
printf("kill at %d\n", Time);
killing_time+=killing_period;
}
printf("DONE\n");
}
int
main(void)
{
simulate();
return 0;
}