llf123456 发表于 2020-12-21 15:29:02

选择排序

#include <stdio.h>
#define N 10
int main()
{
        int n,t=0,i,j,a,max;
        scanf("%d",&n);
        for(i=0;i<n;i++)
        {
                scanf("%d",&a);
        }

        for(i=0;i<n-1;i++)
        {
                max = a;
                for(j=i+1;j<n;j++)
                        if(max<a)max=a;
                        t = a;
                        a = max;
                        max = t;
        }
        for(i=0;i<n;i++)
        {
                printf("%d ",a);
        }
    return 0;
}//请问我的选择排序哪里错了

风过无痕1989 发表于 2020-12-21 15:51:53

本帖最后由 风过无痕1989 于 2020-12-21 16:25 编辑

以下是调试好的程序,由小到大排序:
#include <stdio.h>
#define N 10
int main()
{
    int n = 10, t = 0, i, j, a, max;
    scanf("%d", &n);
    for (i = 0;i<n;i++)
    {
      scanf("%d", &a);
    }
       
    for (i = 0;i < n;i++)
    {
      max = a;
      for (j = 0;j < n;j++)
      {
            if (max < a)
            {
                max = a;
                t = a;
                a = max;
                a = t;
             }
      }
    }
   
    for (i = 0;i<n;i++)
    {
      printf("%d ", a);
    }
    return 0;
}

小甲鱼的铁粉 发表于 2020-12-21 16:00:58

本帖最后由 小甲鱼的铁粉 于 2020-12-21 16:04 编辑

看楼上

小甲鱼的铁粉 发表于 2020-12-21 16:02:55

小甲鱼的铁粉 发表于 2020-12-21 16:00
这个一代码块的逻辑错了
选择排序的基本算法是从待排序的区间中经过选择和交换后选出最大的数值存放到 a ...

加红的两个a是ai,我打的是ai,但是一直显示a

风过无痕1989 发表于 2020-12-21 16:21:46

程序已经帮你调试好了
页: [1]
查看完整版本: 选择排序