回 帖 发 新 帖 刷新版面

主题:对m个数进行排序

呵呵,初次来到论坛,请教一下各位,这个对m个数进行排序的代码错在哪里。谢谢。

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int i,j,m,n,t;
    int a[100];
    scanf("%d",&m);
    for(i=0;i<m;i++)
    {
        scanf("%d",&a[i]);
    }
    printf("\n");
    for(i=0;i<m;i++)
    {
        for(j=0;j<m-i;j++)
        {
            if(a[i]>a[i+1])
            {
                t=a[i];
                a[i]=a[i+1];
                a[i+1]=t;
            }
        }
    }
    for(i=0;i<m;i++)
    {
        printf("%d ",a[i]);
    }
    printf("\n");
    system("pause");
    return 0;
}

[em2][em2]

回复列表 (共4个回复)

沙发

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int i,j,m,n,t;
    int a[100];
    scanf("%d",&m);
    for(i=0;i<m;i++)
    {
        scanf("%d",&a[i]);
    }
    printf("\n");
    for(i=0;i<m;i++)
    {
        for(j=i+1;j<m;j++)
        {
            if(a[i]>a[j])
            {
                t=a[i];
                a[i]=a[j];
                a[j]=t;
            }
        }
    }
    for(i=0;i<m;i++)
    {
        printf("%d ",a[i]);
    }
    printf("\n");
    system("pause");
    return 0;
}

排序算法有问题哈,给你改成冒泡算法了。

板凳

论坛有个排序总结的帖子,写的不错,建议搜索看看、

3 楼

for(i=0;i<m;i++)
    {
        for(j=0;j<m-i;j++)
        {
            if(a[i]>a[i+1])
            {
                t=a[i];
                a[i]=a[i+1];
                a[i+1]=t;
            }
        }
    }
第一个for循环改成for(i=0;i<m-1;i++)
第二个for循环改成 for(j=0;j<m-1-i;j++)

4 楼

for(i=0;i<m;i++)
    {
        for(j=0;j<m-i;j++)
        {
            if(a[i]>a[i+1])
            {
                t=a[i];
                a[i]=a[i+1];
                a[i+1]=t;
            }
        }
    }
第一个for循环改成for(i=0;i<m-1;i++)
第二个for循环改成 for(j=0;j<m-1-i;j++)
循环中a[i]都改成a[j],a[i+1]都改成a[j+1]
就是冒泡法了

我来回复

您尚未登录,请登录后再回复。点此登录或注册