1613551 发表于 2022-11-10 11:05:11

关于排序的问题

我这个程序是把数组a中的整形重新按照从小到大的顺序排序,感觉自己想法没错,但是好像实现不了

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int i, num, j, k;
    int a = {50, 35, 45, 69, 12, 7896, 32, 45, 1, 0, 945, 3, 45, 78, 21};
    int *aa = a;
    for (int i = 1; i <= 15; i++)
    {
      if (aa < aa)
      {
            num = aa;
            for (j = i - 1; (j >= 0) && (aa > num); --j)
                aa = aa;
            aa = num;
      }
    }
    for (k = 0; k < 15; k++)
    {
      printf("%d,", aa);
    }

    putchar('\n');
    system("pause");
    return 0;
}

jackz007 发表于 2022-11-10 11:05:12

本帖最后由 jackz007 于 2022-11-10 12:39 编辑

#include <stdio.h>
#include <stdlib.h>

int main()
{
      int c , i , num , j , k                                                ;
      int a = {50, 35, 45, 69, 12, 7896, 32, 45, 1, 0, 945, 3, 45, 78, 21} ;
      for(i = 0 , c = 1 ; i < 15 && c ; i ++)
      {
                for(c = 0 , j = 1 ; j < 15 - i ; j ++)
                {
                        if(a < a)
                        {
                              k = a             ;
                              a = a          ;
                              a = k               ;
                              c ++                     ;
                        }
                }
      }
      printf("%d" , a)                              ;
      for(i = 1 ; i < 15 ; i ++) printf(", %d" , a) ;
      printf("\n")                                     ;
      system("pause")                                  ;
}

jhq999 发表于 2022-11-10 11:31:32

本帖最后由 jhq999 于 2022-11-10 11:40 编辑


aa = num;//因为都是以循环条件为否结束的,aa>num为假时,aa<=num,aa才是最后一个大于num的

两手空空儿 发表于 2022-11-10 11:47:51

for (int i = 1; i <= 15; i++)
    {
      if (aa < aa)      //11行这里有个越界的问题,aa是不能用的


for (j = i - 1; (j >= 0) && (aa > num); --j)
                aa = aa;// 第15行,这里原来aa的数据丢失了,导致了你结果里出现了一大堆的50
            aa = num;
      }


1613551 发表于 2022-11-10 12:15:06

{:10_266:}好难还是没有想明白,晚上再想了

1613551 发表于 2022-11-10 14:44:47

jackz007 发表于 2022-11-10 12:36


{:10_254:}大佬,我主要是想理解教材上的案例

jackz007 发表于 2022-11-10 14:51:26

本帖最后由 jackz007 于 2022-11-10 14:52 编辑

1613551 发表于 2022-11-10 14:44
大佬,我主要是想理解教材上的案例

      条条道路通罗马,对于编程而言,绝对是结果主导一切。只要结果对,说啥都有理!

两手空空儿 发表于 2022-11-10 15:22:18

题目的注释还是很清楚的,问题如下
9行    for (int i = 1; i <= 15; i++)      这里是想遍历a-a的数据,不能越界,改成i < 15
16行改成aa = num;       前面的for结束时,j又完成了一次 j--, 要用原来的位置,那就 j + 1

1613551 发表于 2022-11-10 18:19:24

jackz007 发表于 2022-11-10 14:51
条条道路通罗马,对于编程而言,绝对是结果主导一切。只要结果对,说啥都有理!

懂了

1613551 发表于 2022-11-10 18:25:53

两手空空儿 发表于 2022-11-10 15:22
题目的注释还是很清楚的,问题如下
9行    for (int i = 1; i

{:10_266:}我怀疑我是一个智障....我一直不理解的原因是,第14的for语句,我忘记加{}号了......我一直没注意到,我说怎么怎么想都想明白呢......因为我自己脑部了括号了
页: [1]
查看完整版本: 关于排序的问题