Problem Description
设有m个取值范围在[0,n)区间内且互不相同的整数,其中m是区间[n/2,n]范围内的任一整数。编写一个尽可能高效的算法,将它们从小到大排序。已知存在时间复杂度为O(m)的算法完成该任务。
Input Description
第一行分别输入两个整数n和m;
第二行输入需排序的m个整数。
Output Description
这m个整数从小到大的排列。
Sample Input
10 6
3 0 5 9 7 2
Sample Output
0 2 3 5 7 9
#include <stdio.h>
int main()
{
int n,m;
int a[500];
scanf("%d %d",&n,&m);
//数据的传入
for(int i = 0;i < m;i++)
{
scanf("%d",&a[i]);
}
//排序
for(int j = 0;j < m - 1;j++) //冒泡排序
for(int k = 0;k < m - j -1;k++)
{
if(a[k] > a[k + 1])
{
int t = a[k];
a[k] = a[k+1];
a[k+1] = t;
}
}
//输出
for(int i = 0;i < m;i++)
{
printf("%d ",a[i]);
}
}
#include<stdio.h>
int main()
{
int n,m;
scanf("%d %d",&n,&m);
int a[1000];
int i;
for(i=0;i<m;i++)
{
scanf("%d",&a[i]);
}
int max;
for(i=0;i<m-1;i++)
{
if(a[i+1]<a[i])
{
max=a[i+1];
a[i+1]=a[i];
a[i]=max;
i=-1;
}
}
for(i=0;i<m;i++)
{
printf("%d ",a[i]);
}
}
8万+



被折叠的 条评论
为什么被折叠?



