小编use*_*819的帖子

使用随机数生成器的代码的 Big-O 是什么?

我想用 1 到 N 之间的随机值填充数组“a”(没有重复值)。假设 randInt(i, j) 的 Big-O 为 O(1),并且该函数生成从 i 到 j 的随机值。
输出示例如下:

{1,2,3,4,5} 或 {2,3,1,4,5} 或 {5,4,2,1,3} 但不是 {1,2,1,3,4}

#include<set>
using std::set;

set<int> S;// space O(N) ?
int a[N];  // space O(N)
int i = 0; // space O(1)
do {
    int val = randInt(1,N);   //space O(1), time O(1) variable val is created many times ?
    if (S.find(val) != S.end()) { //time O(log N)? 
        a[i] = val; // time O(1)
        i++; // time O(1)
        S.insert(val); // …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm big-o

1
推荐指数
1
解决办法
3179
查看次数

标签 统计

algorithm ×1

big-o ×1

c++ ×1