按升序对数字进行排序
我已经编写了程序来输入数字,并在C中以升序列印。我尝试了,但它无法正常工作。谁能告诉我如何以正确的方式做到这一点?按升序对数字进行排序
我尝试过使用排序,但它没有以正确的方式工作;怎么做?
代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int highest,temp=0; //decleartion
int a[5];
int i;
for(i=0;i<5;i++)
{
scanf("%d",&a[i]); //taking input
}
highest=a[0];
for(i=1;i<5;i++)
{
if(a[i]<a[0])
{
temp=a[0];
a[0]=a[i];
a[i]=temp; //comparing
}
}
for(i=0;i<5;i++)
{
printf("%d\n",a[i]); //printing
}
return 0;
}
您的代码只针对前两个元素的比较。
试试这个 -
for (i = 0; i < n; ++i)
{
for (j = i + 1; j < n; ++j)
{
if (number[i] > number[j])
{
temp = number[i];
number[i] = number[j];
number[j] = temp;
}
}
}
感谢兄弟帮助了很多! –
Your welcome .. –
您也可以尝试这个 -
for (i = 0; i < n; ++i)
{
for (j = i + 1; j < n; ++j)
{
if (number[i] > number[j])
{
number[i] = number[i] + number[j];
number[j] = number[i] - number[j];
number[i] = number[i] - number[j];
}
}
}
这是交换数组中两个元素的非常愚蠢的方式。它完全不必要地冒着溢出的风险,并且招致三次算术运算的花费,这将比一个临时变量占用更多空间。 –
必须在冒泡排序技术来读取,然后再试一次执行代码:) – Cherubim
确定最大元素,并重复过程来确定剩余元素的最大值。 – BLUEPIXY
欢迎来到Stack Overflow。 请注意,在这里说'谢谢'的首选方式是通过 提高投票的好问题和有用的答案(一旦你有足够的声誉这样做),并接受任何 问题最有用的答案,你问(这也给你一个小小的提升,以你的声望 )。 请参阅[关于]页面,以及[如何在此处提问 ?]和 [当有人回答我的 问题时,我该怎么办? ?](http://stackoverflow.com/help/someone-answers) –