C++冒泡排序

2016年5月22日 星期天 天气:晴
阴历四月十六

冒泡排序(BubbleSort)

冒泡排序,依次比较相邻的两个数,小放前,大放后。第一趟,将最大的一个数放最后;第二趟,将第二大的数放在最大数的前面;依次类推。

举例:

随机产生十个0-100以内的数字,用冒泡排序法排序。

/* 冒泡排序 - 上海 - 丰哥 - 2016-5-22 21:52:28*/
#include
#include
#include //生成种子

/获取目标数据/
void GetDatas(std::vector& vec_datas, int iMaxSize, int iMaxNum);

/获取排序后的数据/
void GetResult(std::vector& vec_datas);

/打印数据/
void PrintDatas(std::vector& vec_datas);

int main()
{
int i = 0;

std::vector vec_datas;	//目标数据

GetDatas(vec_datas, 10, 100);	//产生10个随机数

std::cout << "随机产生10个数字:" << std::endl;
PrintDatas(vec_datas);

GetResult(vec_datas);	//排序

std::cout << "冒泡排序后的结果:" << std::endl;
PrintDatas(vec_datas);

std::cin >> i;	//让程序暂停。
i = -1;

return 0;

}

void GetDatas(std::vector& vec_datas, int iMaxSize, int iMaxNum)
{
/生成种子,产生数据/

//生成种子
srand((unsigned)time(NULL));

//产生数据(0到iMaxNum-1之间的一个数)
for (int i=0; i

}

void GetResult(std::vector& vec_datas)
{
for (int i=0; i<(int)vec_datas.size(); i++)
{
//每一趟都把最大的一个数排后面。
for (int j=0; j<(int)vec_datas.size()-i-1; j++)
{
if (vec_datas[j] > vec_datas[j+1])
{
int iTmp = vec_datas[j];
vec_datas[j] = vec_datas[j + 1];
vec_datas[j + 1] = iTmp;
}
}
}
return;
}

void PrintDatas(std::vector& vec_datas)
{
for (int i=0; i<(int)vec_datas.size(); i++)
{
std::cout << vec_datas[i] << " ";
}
std::cout << std::endl;
}

你可能感兴趣的:(C++)