题目要求:
本题要求将给定的n个整数从小到大排序后输出。
代码实现: (写法一)
#include <stdio.h>
int main()
{
int n,i;
scanf("%d",&n);
int arr[n];
for(i = 0;i < n;i++)
{
scanf("%d",&arr[i]);
}
//从小到大排序
int min,temp;
for(int i = 0;i < n;i++)
{
min = i; //假设i为最小数下标,存放最大数下标
for(int j = i + 1;j < n;j++)
{
if(arr[j] < arr[min]) //如果比最小还小,则min改成该值(若想从大到小输出就改为‘>’)
{
min = j;
}
}
temp = arr[min]; //交换
arr[min] = arr[i];
arr[i] = temp;
}
//注意格式问题
printf("%d",arr[0]);
for(i = 1;i < n;i++)
{
printf(" %d",arr[i]);
}
return 0;
}
运行结果:
代码实现:(写法二)
#include<stdio.h>
int main()
{
int n, i, j, t;
scanf("%d", &n);
int arr[n];
for(i = 0;i < n;i++)
scanf("%d",&arr[i]);
for(i = 1;i < n;i++)
{
for(j = 0;j < n - i;j++)
{
if(arr[j] > arr[j+1]) //升序
{
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
for(i = 0;i < n;i++)
{
if(i < n - 1)
printf("%d ", arr[i]);
else
{
printf("%d\n", arr[n - 1]);
}
}
return 0;
}