2401_88452130 2024-11-13 19:32 采纳率: 0%
浏览 3

我的冒泡排序为什么不对?

照书上写的冒泡排序 为什么 输出结果完全没进行排序 直接原序输出了

img

  • 写回答

1条回答 默认 最新

  • Huazie 优质创作者: 编程框架技术领域 2024-11-13 19:44
    关注

    这个判断 i 有啥意义,判断 j

    img

    给你个参考:

    
    #include<stdio.h>
    
    // 从后往前冒泡
    void sort(int a[],int n)
    {
        int i,j,t,noswap;
        for(i=0;i< n-1; i++)
        {
            noswap=1;
            for(j=n-1;j>i;j--)
                if(a[j-1]>a[j])
                {
                    t=a[j-1];
                    a[j-1]=a[j];
                    a[j]=t;
                    noswap=0;
                }
            if(noswap)    
                break;
        }
    }
    
    // 从前往后冒泡
    void sort1(int a[],int n)
    {
        int i,j,t,noswap;
        for(i=0;i< n-1; i++)
        {
            noswap=1;
            for(j=0;j<n-1-i;j++)
                if(a[j+1]>a[j])
                {
                    t=a[j+1];
                    a[j+1]=a[j];
                    a[j]=t;
                    noswap=0;
                }
            if(noswap)  
                break;
        }
    }
    
    int main() 
    {
         
        int n;
        printf("Input n:");
        scanf("%d", &n);
         
        printf("Input %d numbers:", n);
    
        int a[n];
        for (int i = 0; i < n; i++)
        {
            scanf("%d", &a[i]);
        }
    
        sort1(a, n);
    
        printf("Sorting results:");
        for (int i = 0; i < n; i++) 
        {
            printf("%d ", a[i]);
        }
    
        return 0;
    }
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 11月13日