【发布时间】:2014-03-27 22:59:30
【问题描述】:
我得到了一项家庭作业,要做一个按升序对数组进行排序的程序。我这样做了:
#include <stdio.h>
int main()
{
int a[100],i,n,j,temp;
printf("Enter the number of elements: ");
scanf("%d",&n);
for(i=0;i<n;++i)
{
printf("%d. Enter element: ",i+1);
scanf("%d",&a[i]);
}
for(j=0;j<n;++j)
for(i=j+1;i<n;++i)
{
if(a[j]>a[i])
{
temp=a[j];
a[j]=a[i];
a[i]=temp;
}
}
printf("Ascending order: ");
for(i=0;i<n;++i)
printf("%d ",a[i]);
return 0;
}
输入的数字不会超过 10 个。这可以用比我在这里做的更少的代码来完成吗?我希望代码尽可能短。任何帮助将不胜感激。谢谢!
【问题讨论】:
-
代码高尔夫和效率是两个不同的东西。哪个优先级更高?此外,如果减少 SLOC 会降低可读性/可维护性,那也不是一个好主意。
-
当然,您可以编写一个 C 程序来使用标准库函数
qsort()对数组进行排序。 :) 我猜你是不允许这样做的,但应该提一下,因为它通常是实际程序的最佳方法。 -
代码高尔夫优先级更高,不,我不允许使用 qsort
-
如果输入不会超过10个数字,为什么声明
a[100]?? -
我是说这个程序不会针对很多数字进行测试,我只是拿了一个[100]