C语言 关于数组中的数从小到大排序的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言 关于数组中的数从小到大排序的问题相关的知识,希望对你有一定的参考价值。

把数组中的5个数由小到大排列 下面程序错在哪? #include <stdio.h>
main()

int Num1[40];
int i,j,z,q,a;
printf("Enter strings for A \n");
for(i=0;i<5;i++)

scanf("%d",&Num1[i]);

for(z=0;z<5;z++)

for(j=0;j<5;j++) ;

if(Num1[j]>Num1[j+1]) 注:if中每次挑选出两个中一个较大的数 并把它们调换位置
q=Num1[j+1];<br> Num1[j+1]=Num1[j];<br> Num1[j]=q;



for(a=0;a<5;a++)
printf("%d ",Num1[a]);</p><p _extended="true">

你应该学C没多久吧,出的错挺难找的,而且空间复杂度比较高,这个程序的空间复杂度能减小很多。我就说说你的错误。1.“for(j=0;j<5;j++) ;”这个分号是不能有的,有了它循环不执行。2.还是这句,程序执行五次循环,数组第五回比较是Num1(5)和Num1(4)的比较,Num1(5)你是没有定义的,也就是一个不确定的数和确定的数比较,程序多半会出问题的。所以把循环中的5改成4就OK了。 参考技术A 你这个程序其实也没什么大错吧,把j<5改为j<5-i试试,大括孤可以省略好几个,z和a都可以换成i, 参考技术B 你应该学C没多久吧,出的错挺难找的,而且空间复杂度比较高,这个程序的空间复杂度能减小很多。我就说说你的错误。1.“for(j=0;j<5;j++)
;”这个分号是不能有的,有了它循环不执行。2.还是这句,程序执行五次循环,数组第五回比较是Num1(5)和Num1(4)的比较,Num1(5)你是没有定义的,也就是一个不确定的数和确定的数比较,程序多半会出问题的。所以把循环中的5改成4就OK了。
参考技术C 你应该学C没多久吧,出的错挺难找的,而且空间复杂度比较高,这个程序的空间复杂度能减小很多。我就说说你的错误。1.“for(j=0;j<5;j++)
;”这个分号是不能有的,有了它循环不执行。2.还是这句,程序执行五次循环,数组第五回比较是Num1(5)和Num1(4)的比较,Num1(5)你是没有定义的,也就是一个不确定的数和确定的数比较,程序多半会出问题的。所以把循环中的5改成4就OK了。

求问数组从小到大排序最少交换次数的题目怎么做比较好?

具体题目再图片里

参考技术A 数组排序 使得交换次数最少 题目: 给定一个包含1-n的数列,我们通过交换任意两个元素给数列重新排序。 求最少需要多少次交换,能把数组排成按1-n递增的顺序。 参考技术B

交换5次:

参考技术C 少需要交换2次就可以复位。如果瓶子更多呢?你可以通过编程来解决。输入格式为两行:第一行:一个正整数N(N<. 数组排序计算最少交换次数

以上是关于C语言 关于数组中的数从小到大排序的问题的主要内容,如果未能解决你的问题,请参考以下文章

C语言数组排序问题

C语言将一组数从大到小排序 只能移动相邻的数 并且要求步骤最小 怎么设计逻辑

求问数组从小到大排序最少交换次数的题目怎么做比较好?

在c语言编程中如何将1-10的数从小到大排列。

C语言—选择排序

C语言—选择排序