鱼C论坛

 找回密码
 立即注册
查看: 4971|回复: 6

关于冒泡排序法

[复制链接]
发表于 2013-9-2 10:41:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 1123566890 于 2013-9-2 10:42 编辑

  要求随机输入10个数 输出的结果从小到大排列
有段代码不太理解 希望高手们能帮忙解释一下


就这段:
[i][i][i][i]    if(a[i]>a[i+1])
                        {
                                t=a[i];
                                a=a[i+1];
                                a[i+1]=t;
                        }
[/i][/i][/i][/i][/i][/i]
[i][i][i]下面是源代码:
===========================================================================
#include<stdio.h>
void main()

{
        int a[10];
        int i,j,t;
        printf("请输入10个数\n");
        for(i=0;i<10;i++)
        {
                scanf("%d ",&a[i]);
        }
        printf("\n");


        for(j=0;j<9;j++)
        {
                for(i=0;i<9-j;i++)
                {
                        if(a[i]>a[i+1])
                        {
                                t=a[i];
                                a[i]=a[i+1];
                                a[i+1]=t;
                        }
                }
        
        }
        printf("the sorted numbers:\n");
                for(i=0;i<10;i++)
                {
                        printf("%d",a);
                }

                printf("\n");
}

[/i][/i][/i][/i][/i][/i][/i]
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-9-2 10:50:57 | 显示全部楼层
  1. #include<stdio.h>
  2. void main()

  3. {
  4.         int a[10]={2,5,8,1,4,7,3,6,9,0};
  5.         int i,j,t;
  6.         printf("请输入10个数\n");
  7.         for(i=0;i<10;i++)
  8.         {
  9.         //        scanf("%d ",&a);
  10.         }
  11.         printf("\n");


  12.         for(j=0;j<9;j++)
  13.         {
  14.                 for(i=0;i<9-j;i++)
  15.                 {
  16.                         if(a[i]>a[i+1])
  17.                         {
  18.                                                         t=a[i];
  19.                                                         a[i]=a[i+1];
  20.                                                         a[i+1]=t;
  21.                         }
  22.                 }
  23.                                
  24.         }
  25.         printf("the sorted numbers:\n");
  26.                 for(i=0;i<10;i++)
  27.                 {
  28.                         printf("%d ",a[i]);
  29.                 }
  30.                
复制代码
你给的代码是错的。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-2 13:40:49 | 显示全部楼层
楼主,帮你改了你想要的结果了,程序如下
  1. #include<stdio.h>
  2. void main()

  3. {
  4.         int a[10];
  5.         int i,j,t;
  6.         printf("请输入10个数\n");
  7.         for(i=0;i<10;i++)
  8.         {
  9.                 scanf("%d",&a[i]);
  10.         }
  11.         printf("\n");


  12.         for(j=0;j<9;j++)
  13.         {
  14.                 for(i=0;i<9-j;i++)
  15.                 {
  16.                         if(a[i]>a[i+1])
  17.                         {
  18.                                 t=a[i];
  19.                                 a[i]=a[i+1];
  20.                                 a[i+1]=t;
  21.                         }
  22.                 }
  23.         
  24.         }
  25.         printf("the sorted numbers:\n");
  26.                 for(i=0;i<10;i++)
  27.                 {
  28.                         printf("%d\t",a[i]);
  29.                 }

  30.                 printf("\n");
  31. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-2 14:08:43 | 显示全部楼层
本帖最后由 佐少love 于 2013-9-2 14:19 编辑

看了 楼上几个的回复,感觉还是没有结局LZ的问题!
  1. /* LZ贴出的代码有问题可能是发帖的时候,出的问题,LZ下次贴代码的时候可以,先点击“附件”右边的“<>”,在贴代码就没有问题了!! */
复制代码
  1. for(j=0;j<9;j++)
  2. {
  3.       for(i=0;i<9-j;i++)
  4.       {
  5.            if(a[i]>a[i+1])
  6.            {
  7.                  t=a[i];               /* 先把a[i]里面的值进行备份到t这临时变量里面去 */
  8.                  a[i]=a[i+1];      /* 再把a[+1]里面的值给a[i],不用担心覆盖a[i]里面的值,在t里面已经进行备份了*/
  9.                  a[i+1]=t;          /* 然后把t里面的值给a[i+1] */
  10.            }
  11.      }
  12. }
复制代码


评分

参与人数 1鱼币 +1 收起 理由
1123566890 + 1

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-2 14:14:18 | 显示全部楼层


                                t=a[i];
                                a[i]=a[i+1];
                                a[i+1]=t;


关键是这三行啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-2 16:06:31 | 显示全部楼层
{:1_1:}学习了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-2 18:27:03 | 显示全部楼层
这三行的意思是比较第一个与第二个的大小,如果第一个比第二个大的话就交换他们的位置,再比较第二个与第三个大小,以此类推
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-6 01:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表