Chinaunix首页 | 论坛 | 博客
  • 博客访问: 18672160
  • 博文数量: 7460
  • 博客积分: 10434
  • 博客等级: 上将
  • 技术积分: 78178
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-02 22:54
文章分类

全部博文(7460)

文章存档

2011年(1)

2009年(669)

2008年(6790)

分类: C/C++

2008-05-27 11:21:11

一.起泡法排序
起泡法排序:掌握两个重点,(1)N个数排序需要进行N-1趟排序;(2)第J趟排序需进行N-J次比较(交换).
        
程序如下:定义一维数组,这里a[0]不用,存储a[1]...a[5]共5个元素,因此N为5.
#include
main()
{
   int i,j,temp,a[6];
   printf("\n input the number \n");
   for(i=1;i<=5;i++)
   scanf("%d",&a[i]);
   printf("\n");
   for(j=1;j<=4;j++)
   for(i=1;i<=5-j;i++)
   {
       if(a[i]>a[i+1]) {temp=a[i];a[i]=a[i+1];a[i+1]=temp;}
   }
   for(i=1;i<=5;i++)
   printf("\n%d",a[i]);
}
上述程序中,第一个循环用于控制输入,第二个循环用于控制进行排序的趟数,第三个循环则用于每一趟排序中需进行比较交换的次数.

二.此排序算法原理:
     每次将最首的元素与其它元素比较.
main()
{
 int p,q,a[10],i,j,temp;
 printf("input the number:\n");
 for(i=0;i<10;i++)
 {
  scanf("%d",&a[i]);
 }
 for(i=0;i<10;i++)
 {
  p=i;
  q=a[i];

  for(j=i+1;j<10;j++)

   if(q>a[j]) {p=j;q=a[j];}
   if(i!=p)
   {
    temp=a[i];
    a[i]=a[p];
    a[p]=temp;
   }

  printf("%d",a[i]);
  printf(",");
 }
}

阅读(408) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~