Chinaunix首页 | 论坛 | 博客
  • 博客访问: 373015
  • 博文数量: 57
  • 博客积分: 4020
  • 博客等级: 上校
  • 技术积分: 647
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-17 15:57
文章分类

全部博文(57)

文章存档

2009年(22)

2008年(35)

我的朋友

分类: C/C++

2008-04-15 21:54:57

数组中从大到小排列数的方法

Author:yuexingtian

Date:Tuesday, April 15, 2008

/*数组从大到小排列十个数*/

main()

{

   int i,j,p,q,s,a[10];

   printf("\n input 10 numbers:\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

         if(i!=p)

            {s=a[i];

            a[i]=a[p];

            a[p]=s;}

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

        }

   getch();

}

测试结果:

 

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

yuexingtian2008-04-16 16:55:50

其实这个例子用的就是:“起泡法”,从这个例子中学到的思想才是最重要的!

yuexingtian2008-04-16 16:39:41

本例程序中用了两个并列的for循环语句,在第二个for 语句中又嵌套了一个循环语句。第一个for语句用于输入10个元素的初值。第二个for语句用于排序。本程序的排序采用逐个比较的方法进行。在i次循环时,把第一个元素的下标i赋于p,而把该下标变量值a[i]赋于q。然后进入小循环,从a[i+1]起到最后一个元素止逐个与a[i]作比较,有比a[i]大者则将其下标送p,元素值送q。 一次循环结束后,p即为最大元素的下标,q则为该元素值。若此时i≠p,说明p,q值均已不是进入小循环之前所赋之值,则交换a[i]和a[p]之值。 此时a[i]为已排序完毕的元素。输出该值之后转入下一次循环。对i+1以后各个元素排序。