【发布时间】:2020-08-23 15:09:54
【问题描述】:
大家好,我正在研究 c,我的代码看起来像这样,基本上它是一个数组,在每个数组 [j] 中都有一个从 1 到 8 的数字,不是按顺序排列的,我试图找到 1 的位置是,并做一些操作,然后找到 2 并做其他操作等。直到数字 8:
for(i=1;i<9;i++)
for(j=0;j<8;j++)
if(array[j]==i)
//and operations to do but they are not needed now;
我正在尝试找到另一种方法来减少循环中花费的时间,因为复杂性可能是 (n^2)。有人建议我有一个系统来订购东西,但我不知道它是否足够好。 谢谢大家!
【问题讨论】:
-
我不确定我们是否有足够的信息来真正回答这个问题。问题大小是多少?问题的不同实例是否有 8 以外的数字,或者数字 8 是否固定?
-
没有问题没有固定大小,基本上我有一个structs数组,struct就像这个typedef struct {int index;字符字符串}。我必须按顺序打印字符串,因为 struct.index 是从 1 到 n 的随机数。使用嵌套循环需要花费太多时间来打印所有内容。如果我有 n=1000,最坏的情况将需要 O(nn) 复杂度,而且太多了!
-
那么,你想要更快的执行还是想要更少的 O 复杂度?
-
stackoverflow 不是来设计你的代码的。请发布minimal reproducible example 以及您想要改进的地方
-
更少的时间复杂度意味着在最坏的情况下更快的执行,对吧?无论如何,我需要的是一种不太复杂的方法来做同样的事情,但仍然无法找到它
标签: c loops for-loop time complexity-theory