#include <iostream>
#include <ctime>
using namespace std;
void mopsort(int a[],int n) //冒泡排序,每找出一个较大值都要交换,最值自然而然地去
{ //了最前或最后.
int i,j,min;
for(i=0;i<n-1;i++) //冒泡与选择的区别在于冒泡中两两元素间的交换比较多.
for (j=0;j<n-i-1;j++) //相同点在于每次外层循环都找到一个最值.
{
if (a[j]>a[j+1])
{
min=a[j];
a[j]=a[j+1];
a[j+1]=min;
}
}
}
void selsort(int a[],int n) //选择排序,每轮循环找出一个最值,将它放到第一个位置.
{
int i,j,k,min;
for (i=0;i<n-1;i++) //一次i++就是找出并交换一个最值.
{
k=i;
for (j=i+1;j<n;j++) //找出一个最值. 找出较大值并不交换.
if (a[k]>a[j])k=j;
if(k!=i) //将这个最值放在最前位置
{
min=a[i];
a[i]=a[k];
a[k]=min;
}
}
}
int main(void)
{
const int n=10;
int a[n],i;
srand(time(0)); //srand用来初始化一个全局变量,作用rand随机函数的种子.用1做参数重新初始化.
for ( i=0;i<n;i++)
{
a[i]=rand()%100; //rand使用srand产生的种子,生成一个两字节的整数
cout<<a[i]<<endl;
}
mopsort(a,n);
cout<<"after mop sort:"<<endl;
for (i=0;i<n;i++)cout<<a[i]<<endl;
selsort(a,n);
cout<<"after selecttion sort:"<<endl;
for (i=0;i<n;i++)cout<<a[i]<<endl;
return 0;
}