/*
* 编程珠玑第一章,电话号码排序问题
*/
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <bitset>
using namespace std;
/*随机数产生函数
* n 随机数产生范围(1,n)
* m 输出的随机数的个数
* arrayM是存放输出结果的整数数组
*/
void randInt(int n, int m, int arrayM[])
{
srand(time(0)); //设置随机数种子,必须的
int *arrayN = new int[n];
for(int i=0; i<n; i++) {
arrayN[i] = i+1;
}
for(int i=0; i<n; i++) {
int temp, rint;
rint = rand()%n;
temp = arrayN[i];
arrayN[i] = arrayN[rint];
arrayN[rint] = temp;
}
for(int i=0; i<m; i++) {
arrayM[i] = arrayN[i];
}
}
int main()
{
int n=10, m=5;
//生成m个互不相同的随机数,值范围(0,n)
int *arrayM = new int[m];
randInt(n, m, arrayM);
cout<<"orginal number: ";
for(int i=0; i<m; i++) {
cout<<arrayM[i]<<" ";
}
cout<<endl;
//对arrayM排序
bitset<10> abit;
abit.reset();
for(int i=0; i<m; i++) {
abit.set(arrayM[i]-1); //此处小心,不能数组越界
}
cout<<"sorted number: ";
for(int i=0; i<n; i++) {
if(abit.test(i))
cout<<i+1<<" ";
}
cout<<endl;
return 0;
}
编程珠玑第一章,电话号码排序问题
最新推荐文章于 2018-05-08 00:31:47 发布