关于排序的问题
我这个程序是把数组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 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:40 编辑
aa = num;//因为都是以循环条件为否结束的,aa>num为假时,aa<=num,aa才是最后一个大于num的 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;
}
{:10_266:}好难还是没有想明白,晚上再想了 jackz007 发表于 2022-11-10 12:36
{:10_254:}大佬,我主要是想理解教材上的案例 本帖最后由 jackz007 于 2022-11-10 14:52 编辑
1613551 发表于 2022-11-10 14:44
大佬,我主要是想理解教材上的案例
条条道路通罗马,对于编程而言,绝对是结果主导一切。只要结果对,说啥都有理! 题目的注释还是很清楚的,问题如下
9行 for (int i = 1; i <= 15; i++) 这里是想遍历a-a的数据,不能越界,改成i < 15
16行改成aa = num; 前面的for结束时,j又完成了一次 j--, 要用原来的位置,那就 j + 1 jackz007 发表于 2022-11-10 14:51
条条道路通罗马,对于编程而言,绝对是结果主导一切。只要结果对,说啥都有理!
懂了 两手空空儿 发表于 2022-11-10 15:22
题目的注释还是很清楚的,问题如下
9行 for (int i = 1; i
{:10_266:}我怀疑我是一个智障....我一直不理解的原因是,第14的for语句,我忘记加{}号了......我一直没注意到,我说怎么怎么想都想明白呢......因为我自己脑部了括号了
页:
[1]