冒泡与选择排序

#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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值