O(n)时间内求无重复的0-n伪随机序列

作者在 2010-01-12 21:08:31 发布以下内容
    网上很多都是O(n^2)的,而且一旦数值大上去后就出不来结果了,因为是纯暴力生成的,数大后很可能后出现死角,而且说O(n^2)只是看上去而已,真正运行起来远不止这个数。
    细想下也不难,只是一种思想,很多地方可以用到的。
 
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define MAX_NUM 10
int main()
{
   int i, temp;
   int a[MAX_NUM+1];
   for(i = 0;i<=MAX_NUM;i++)
   {
      a[i]=i;
   }
   srand((unsigned)time(NULL));
   for(i=MAX_NUM; i>=1; i--)
   {
      temp= rand()%i + 1;
      printf("%3d\n",a[temp]);  
      a[temp]=a[i];
   }
   return 0;
}
默认分类 | 阅读 940 次
文章评论,共1条
lsd98
2010-04-03 10:17
1
<img src="image/face/1.gif" class="face">不错 编程思想很重要!!!
游客请输入验证码
浏览7115次
文章分类
文章归档