关闭

冒泡与选择排序

标签: iostreaminiinclude
787人阅读 评论(0) 收藏 举报
分类:

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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:60583次
    • 积分:801
    • 等级:
    • 排名:千里之外
    • 原创:18篇
    • 转载:3篇
    • 译文:0篇
    • 评论:23条
    文章分类
    最新评论