oj8k 发表于 2019-2-26 23:04:21

最后的子函数为什么不能达到排序效果

#include<stdio.h>
void main()
{
        extern void sort(int x[],int n);
        int a;
        int i;
        for(i = 0;i < 10;i++)
        {
                scanf("%d",&a);
        }
        for(i = 0;i < 10;i++)
        {
                printf("%d ",a);
        }
        printf("\n");
        sort(a,10);
    for(i = 0;i < 10;i++)
        {
                printf("%d ",a);
        }
}
void sort(int x[],int n)
{
        int i,j,temp;
        for(i = 0;i < (n - 1);i++)
        {
                j = (i + 1);
                if(i < j)
                {
                temp = x;
                x = x;
                x = temp;
                }
        }
}

jackz007 发表于 2019-2-26 23:48:21

本帖最后由 jackz007 于 2019-2-27 00:08 编辑

                j = (i + 1);
                if(i < j)
                {
                temp = x;
                x = x;
                x = temp;
                }
      把数组索引值的大小作为调整元素顺序的依据不知楼主是如何考虑的。

      排序函数 sort() 没有功能,我已经重写,楼主可以测试效果。
#include <stdio.h>

void sort(int x[] , const int n)
{
      int i , j , temp                ;
      for(i = 1 ; i < n ; i ++) {
                j = i                   ;
                while(j > 0 && x < x) {
                        temp = x   ;
                        x = x ;
                        x = temp ;
                        j --            ;
                }
      }
}

main(void)
{
      int i , a                                 ;
      for(i = 0 ; i < 10 ; i ++) scanf("%d" , & a) ;
      for(i = 0 ; i < 10 ; i ++) printf("%d " , a) ;
      printf("\n")                                    ;
      sort(a , 10)                                    ;
      for(i = 0 ; i < 10 ; i ++) printf("%d " , a) ;
      printf("\n")                                    ;
}

oj8k 发表于 2019-2-27 10:50:18

谢谢,理解了,我的做法只是进行了一次调换,想的太简单了
页: [1]
查看完整版本: 最后的子函数为什么不能达到排序效果