(C++) 无重复随机数 ——o(n) .1

来源:互联网 发布:男装店淘宝 编辑:程序博客网 时间:2024/05/17 07:32

题目要求:

无重复的输出0~N之间的所有整数。


代码如下:


#include <iostream>

#include <cstdlib>

#include <ctime>

using namespacestd;


void randPlus(int N,int *z_array)

{

    int i, j, k, z;

    int buffer[N];

    

    for (i=0; i<N; i++)

        buffer[i]=0;

    

    srand((unsignedint)time((long *)0));

    

    for (i =0; i < N; i++) {

        z = rand() % (N - i);

        j = 0;  k =0;

        while (j <= z)

        {

            if (buffer[j + k] ==0) j++;

            else k++;

        }

        buffer[j + k - 1] =1;

        z_array[i] = j + k - 1;

    }

}


int main ()

{

    int N;

    cout <<"几个数?" <<endl;

    cin >> N;

    

    int a[N];

    

    randPlus(N, a);

    

    for (int i =0; i < N; i++)

        cout << a[i] <<" ";

    cout <<endl;

    

    return0;

}





0 0