问题描述:设有一组N个数而要确定其中的第K个最大者.
本来想直接使用rand()生成随机数的,但是用rand()直接生成会有重复的数据,不符合问题描述中的数据要求。
下面有两个相似的办法解决:
首相初始化数组:
for(int i=0;i<leg;++i)
arr[i]=2000+i;
1.加工rand
//随机,洗牌
for (int i=0;i<leg/2;++i)
{
int pos=rand()%leg;
int tmp= arr[pos];
arr[pos]=arr[i];
arr[i]=tmp;
}
2.使用stl中的random_shuffle()
random_shuffle(arr,arr+leg);
上面的两个方法都可以生成不重复的无序数据。
注:两种方法都是借鉴别人的,如有雷同实属不幸。