冒泡与选择排序

原创 2006年06月15日 12:06:00

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

相关文章推荐

数据结构面试之十——排序1(直接插入、希尔、冒泡、直接选择排序)

题注:《面试宝典》有相关习题,但思路相对不清晰,排版有错误,作者对此参考相关书籍和自己观点进行了重写,供大家参考。 九、数据结构面试之十——排序1(直接插入、希尔、冒泡、直接选择排序) 1.直接插...

冒泡和选择排序Java代码实现

  • 2017年12月08日 11:57
  • 717B
  • 下载

指针冒泡选择排序

  • 2013年11月14日 16:50
  • 675B
  • 下载

【C语言】冒泡排序,选择排序。

C语言

java小程序——给数组随机赋值,查找输入的值以及冒泡和选择排序数组并输出

import java.util.Random; import java.util.Scanner; public class Test1{ public static void main(...
  • emilyRR
  • emilyRR
  • 2014年10月17日 23:35
  • 814

冒泡和选择排序.mht

  • 2008年05月06日 21:23
  • 121KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:冒泡与选择排序
举报原因:
原因补充:

(最多只允许输入30个字)