BrandNewJoker 2020-03-14 20:05 采纳率: 0%
浏览 368

C语言:随机生成100以内的数,并用冒泡排序,这个哪里错了?

从0开始学C,纯小白一个
代码如下,编译后,有时候能排序,有时候又不能排序,这是怎么回事?
图片说明图片说明

#include <stdio.h>
#include<stdlib.h>
#include<time.h>

#define MAXSIZE 255


/*冒泡排序*/
void BubbleSort(int a[],int n){
    int i,j,temp;
    int flag=0;
    for(i=1;i<n;i++){
        for(j=1;j<n-i+1;j++){
            if(a[j]>a[j+1]){
                temp=a[j];
                a[j]=a[j+1];
                a[j+1]=temp;
                flag=1;
            }
        if(flag==0) return;
        }
    }
}

 int main(){
    srand(time(NULL));  //生成10个100以内的数
    int length=10;
    int i,J;
    int k=1;
    int a[MAXSIZE];
    for(i=1;i<=length;i++){ 
        a[i]=rand()%101;
    }
    printf("排序前:");
    for (i=1;i<=length;i++){
        printf("%d\t",a[i]);
    }
    putchar('\n'); 
    printf("排序后:");
    BubbleSort(a,length);       //冒泡排序
    for (i=1;i<=length;i++){
        printf("%d\t",a[i]);
    }
    putchar('\n'); 
    return 0;   
 }
  • 写回答

1条回答 默认 最新

  • 白色一大坨 2020-03-14 22:01
    关注

    数组操作应该从0开始操作,起泡排序第二层应该减1,请养成良好编程习惯:

    #include <stdio.h>
    #include<stdlib.h>
    #include<time.h>
    
    #define MAXSIZE 255
    
    
    /*冒泡排序*/
    void BubbleSort(int a[],int n)
    {
        int i,j,temp;
        for(i=0;i<n-1;i++)
        {
            for(j=0;j<n-1-i;j++)
            {
                if(a[j]>a[j+1])
                { 
                    temp =a[j+1];
                    a[j+1] = a[j];
                    a[j] = temp;
                }
            }
        }
    }
    
    int main()
    {
        int length=10;
        int i;
        int k=1;
        int a[MAXSIZE];
        srand(time(NULL));  //生成10个100以内的数
        for(i=0;i<length;i++){ 
            a[i]=rand()%101;
        }
        printf("排序前:");
        for (i=0;i<length;i++){
            printf("%d ",a[i]);
        }
        putchar('\n'); 
        printf("排序后:");
        BubbleSort(a,length);       //冒泡排序
        for (i=0;i<length;i++){
            printf("%d ",a[i]);
        }
        putchar('\n'); 
        return 0;   
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器