zhuifengdewozuiniubi
zhuifengdewozuiniubi
采纳率66.7%
2016-11-15 15:58 阅读 1.3k
已采纳

我用c语言写了个冒泡排序法,结果运行结果为什么没有排序= =

#include"stdio.h"
#include"stdlib.h"
void main()
{
int i;
int j;
int a=0;
int b[12]={-1,0,5,2,7,0,18,5,4,3,9,1};
int change=1;
for (i=0;i {
change=0;
for(j=0;j if(b[j]>b[j+1])
{
b[j]=a;
b[j]=b[j+1];
b[j+1]=a;
}
}
for(j=0;j<=11;j++)
printf("%d\n",b[j]);
printf("\n");
}
如上。。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

10条回答 默认 最新

  • 已采纳
    caozhy 从今以后生命中的每一秒都属于我爱的人 2016-11-15 16:53
     #include"stdio.h"
    #include "stdlib.h"
    int main()
    {
    int i;
    int j;
    int a=0;
    int b[12]={-1,0,5,2,7,0,18,5,4,3,9,1};
    for (i=0;i<12-1;i++)
    {
    for(j=0;j<12-1;j++)
    {
    if(b[j]>b[j+1])
    {
    a=b[j];
    b[j]=b[j+1];
    b[j+1]=a;
    }
    
    }
    }
    for(j=0;j<=11;j++)
    printf("%d\n",b[j]);
    printf("\n");
    }
    

    -1
    0
    0
    1
    2
    3
    4
    5
    5
    7
    9
    18

    点赞 1 评论 复制链接分享
  • sailen2012 陌路就好 2016-11-15 16:19

    第二个for循环不对,第二个for循环j不需要受i的影响,同样要执行数组长度-1的次数
    图片说明

    点赞 1 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 2016-11-15 16:22
     #include"stdio.h"
    #include "stdlib.h"
    int main()
    {
    int i;
    int j;
    int a=0;
    int b[12]={-1,0,5,2,7,0,18,5,4,3,9,1};
    int change=1;
    for (i=0;i<12&&change;i++)
    {
    change=0;
    for(j=i;j<12-1;j++)
    {
    if(b[j]>b[j+1])
    {
    a=b[j];
    b[j]=b[j+1];
    b[j+1]=a;
    change=1;
    }
    
    }
    }
    for(j=0;j<=11;j++)
    printf("%d\n",b[j]);
    printf("\n");
    }
    

    肯定可以了

    点赞 1 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 2016-11-15 16:02
     a=b[j]; //修改
    b[j]=b[j+1];
    b[j+1]=a;
    
    点赞 评论 复制链接分享
  • zhuifengdewozuiniubi zhuifengdewozuiniubi 2016-11-15 16:03

    程序 复制粘贴出错了

    点赞 评论 复制链接分享
  • zhuifengdewozuiniubi zhuifengdewozuiniubi 2016-11-15 16:05

    图片说明

    点赞 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 2016-11-15 16:23

    http://ideone.com/Pj2VN9
    -1
    0
    0
    2
    3
    1
    4
    5
    5
    7
    9
    18

    点赞 评论 复制链接分享
  • sailen2012 陌路就好 2016-11-15 16:24

    多想一想冒泡排序的过程
    每次都要将所有的值挨个判断一遍
    这样循环长度-1次,才能将所有的排好
    因为你每次都只能将两个相邻的值交换位置

    点赞 评论 复制链接分享
  • zhuifengdewozuiniubi zhuifengdewozuiniubi 2016-11-15 16:55

    图片说明 这回真的懂了谢谢你们!

    点赞 评论 复制链接分享
  • jhcconan614 jhcconan614 2016-11-27 08:19
    点赞 评论 复制链接分享

相关推荐