|
![]() | 作者: zlj982 [zlj982]
![]() |
登录 |
题目本来是这样的:有1,2,3,4....n一组数,随即存放在一个数组a中,要求按时间复杂度O(n),来从小到大排列这组数,即输出1.2.3.4....n。 我不懂什么复杂度,只想排列出来了,存储数据时想用rand()函数随机产生一个数,判断是否在区间[1,n]中,然后在存在a中。我的程序是: #include<iostream.h> #include<stdlib.h> void main() { int i,j,k,n,t; cout<<"input the size of array:"<<"\n"; cin>>n; int *a; a=new int[n]; cout<<"the array is:"<<"\n"; for(i=0;i<n;i++) { k=rand(); if(k>=1&&k<=n) a[i]=k; cout<<a[i]<<" "; } //下面是排序过程 ..... ..... } 为什么rand()函数每次都是产生同一个值,不是像我想的产生随机数,应该怎么使用啊? 是不是我的程序有什么问题?谁有什么更好的办法能告诉我么? |
地主 发表时间: 05-08-31 07:10 |
![]() | 回复: 286 [unique] ![]() |
登录 |
在程序最前面加一个 randomize(); |
B1层 发表时间: 05-08-31 09:22 |
![]() | 回复: zlj982 [zlj982] ![]() |
登录 |
能详细说一下吗?我加后说randomize没有定义,需要头文件支持么? |
B2层 发表时间: 05-08-31 18:00 |
![]() | 回复: 286 [unique] ![]() |
登录 |
#include<iostream.h> #include<stdlib.h> #include <time.h> void main() { int i,j,k,n,t; srand((unsigned)time(NULL)); cout<<"input the size of array:"<<"\n"; cin>>n; int *a; a=new int[n]; cout<<"the array is:"<<"\n"; for(i=0;i<n;i++) { k=(unsigned int)rand(); //if(k>=1&&k<=n) //不明白这一句是干什么的。你是想把随机数限制到1~n中吗? //如果这样限制,应该改为: k=1+k%n; a[i]=k; cout<<a[i]<<" "; } } randomize是c里的,不是c++里的。 |
B3层 发表时间: 05-09-01 09:46 |
![]() | 回复: zlj982 [zlj982] ![]() |
登录 |
通过了,谢286 |
B4层 发表时间: 05-09-01 09:56 |
![]() | 回复: 286 [unique] ![]() |
登录 |
![]() |
B5层 发表时间: 05-09-01 11:46 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号