现在的位置: 首页 > 综合 > 正文

stl vector实现随机重排列

2013年09月20日 ⁄ 综合 ⁄ 共 638字 ⁄ 字号 评论关闭
#include <algorithm>
#include <iostream>
#include <time.h>
#include <vector>


using namespace std;


void Swap(int &a, int &b)
{
	int c = a;
	a = b;
	b = c;
}


void random_arrange(int a[], int len)
{
	int i;
	srand(time(NULL));
	for(i=0; i<len; i++)
	{
		Swap(a[i], a[rand()%(i+1)]);
	}
}


void print(int a[], int len)
{
	for(int i=0; i<len; i++)
		cout<<a[i]<<"  ";
	cout<<endl;
}


int main(void)
{
	int a[] = {1,2,3,4,5,6,7,8,9};
	int len = sizeof(a)/sizeof(int);
	int i = 0;
	cout<<"before arrange"<<endl;
	print(a, len);


	//random_arrange(a, len);


	vector<int> se;			//这里的vector要是换成set会报错
	while(se.size() < len)
		se.push_back(a[i++]);


	random_shuffle(se.begin(), se.end());
	cout<<"after arrange"<<endl;
	for(i=0; i<len; i++)
		cout<<se[i]<<"  ";
	cout<<endl;
	return 0;
}

抱歉!评论已关闭.