晓觉懿 发表于 2020-6-9 20:44:49

冒泡排序法

#include<stdio.h>
int main(void)
{        int num,i,j;
        printf("请输入要排序的数字个数\n");
        scanf("%d",&num);
        int a[(num-1)];
        for(i=0;i<num;i++)
        {
                printf("a[%d]=",i);
                scanf("%d",&a[(num-1)]);
        }
       
       
        for(i=0;i<=num;i++)
        {
                for(j=(i+1);j<=num;j++)
                {
                        int temp;
                        if(a>a)
                        {
                                temp=a;
                                a=a;
                                a=temp;
                        }
                }
        }
        printf("排序后是:\n");
        for(i=0;i<num;i++)
        {
                        printf("%d\t",a);
        }
       
       
        return 0;
}

大神们,这个冒泡排序法,运行出来怎么不对?运行结果如下:

请输入要排序的数字个数
6
a=8
a=3
a=5
a=1
a=7
a=6
排序后是:
0       6       32      4214907 4214907 1985372658
--------------------------------
Process exited with return value 0
Press any key to continue . . .

sunrise085 发表于 2020-6-9 21:04:02

很多零碎的错误。帮你修改了。
#include<stdio.h>
int main(void)
{   int num,i,j;
    printf("请输入要排序的数字个数\n");
    scanf("%d",&num);
    int a;//这里为什么要减1
    for(i=0;i<num;i++)
    {
      printf("a[%d]=",i);
      scanf("%d",&a);//这里难道不应该是a吗
    }
      
      
    for(i=0;i<num-1;i++)//这里应该是小于num-1
    {
      for(j=(i+1);j<num;j++)//这里应该是小于num
      {
            int temp;
            if(a>a)
            {
                temp=a;
                a=a;
                a=temp;
            }
      }
    }
    printf("排序后是:\n");
    for(i=0;i<num;i++)
    {
      printf("%d\t",a);
    }
      
    return 0;
}

dianshihaoli 发表于 2020-6-9 21:10:51

真不错
页: [1]
查看完整版本: 冒泡排序法