以时间高效的方式在 C 中排序

Sequences in C in a time efficient manner

我正在做一个在每个时间步更新的模拟。我几乎 'kill' 我的网格中的虚拟有机体(它是一个细胞自动机)在 20000 个时间步。我想每杀死 200 次就在 killing_time - 10000killing_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;
}