如何将一乱序数组有序排列
若给一数组大小为十,向其中随意输入:
int a[10] = { 0 };
int i = 0, j = 0, k = 0;
for (i = 0; i < 10; i++)
{
scanf("%d", &a[i]);
}
那么怎么操作才能使其输出有序数字呢?
当前采用升序排法
代码如下:
int main()
{
int a[10] = { 0 };
int i = 0, j = 0, k = 0;
for (i = 0; i < 10; i++)
{
scanf("%d", &a[i]);
}
for (i = 0; i < 10; i++)
{
for (j = 0; j < 10 - i - 1; j++)
{
if (a[j] > a[j + 1])
{
k = a[j];
a[j] = a[j + 1];
a[j + 1] = k;
}
}
}
for (i = 0; i < 10; i++)
{
printf("%d ", a[i]);
}
return 0;
}
采用双重for循环:
在i=0时把所有数中最大数采用j的for循环排到最后即a[9];
在i=1时把除去最后的最大数中剩下的九个数中最大的排到a[8];
依次类推
最终实现升序排列。
此方法称为冒泡排序法。
当然也可以采用降序排序法符号反向就可。
结果如下:
输出正确!!!