欧比 发表于 2020-11-21 09:55:09

选择排序法

本帖最后由 欧比 于 2020-11-21 09:57 编辑

# include <stdio.h>
# define N 8
int main()
{
        int a;
        int max,i,j,tem;
        printf ("请输入8个数字:\n");
        for(i=0;i<N;i++)
        {
                printf("a[%d]=",i) ;                        
                scanf("%d",&a);
        }
        printf("\n");
                printf("8个数字无排序输出为:\n");
        for(i=0;i<N;i++)
        {
                printf("%5d",a);
        }
        printf("\n");
        for(i=0;i<N-1;i++)                        
        {
                max=i;                                 
                for(j=i+1;j<N;j++)                  
                {
                  if(a<a)               
                  max=j;
                  if(max!=i)                        
                  {
                     tem=a;
                     a=a;
                     a=tem;
                        }
          }
        }
          
        printf("从大到小输出:\n");
        for(i=0;i<N;i++)
        printf("%5d",a);
        printf("\n");
        return 0;
}

为什么最后三个数有失误

jackz007 发表于 2020-11-21 11:28:31

      排序部分代码有错误
      for(i=0;i<N-1;i++)                        
      {
                max=i;                                 
                for(j=i+1;j<N;j++)                  
                {
                  if(a<a)               
                  max=j;
                  if(max!=i)                        
                  {
                     tem=a;
                     a=a;
                     a=tem;
                        }
            }
      }

      修改为

      for(i = 0 ; i < N - 1 ; i ++) {
                for(j = i + 1 ; j < N ; j ++) {
                        if(a < a) {
                              tem = a;
                              a = a ;
                              a = tem;
                        }
                }
      }
编译、运行实况:
D:\00.Excise\C>g++ -o x x.c

D:\00.Excise\C>x
请输入8个数字:
a=6
a=35
a=234
a=45
a=88
a=975
a=21
a=8

8个数字无排序输出为:
    6   35234   45   88975   21    8
从大到小输出:
975234   88   45   35   21    8    6

D:\00.Excise\C>
页: [1]
查看完整版本: 选择排序法