超时了!!!怎么弄啊????
描述给定n个正整数,输出前m小的。
输入
两个整数n (0 < n <= 1000000)和 m (0 < m <= 1000)
接下来的n行,每行有一个正整数
输出
只有一行,表示前m小的数,注意行末不要有多余的空格
样例输入
6 3
5
6
4
1
2
3
样例输出
1 2 3
#include<iostream>
using namespace std;
void sort(int a[],int n)
{
int i,j,max;
for(i=n-1;i>0;i--)
for(j=0;j<i;j++)
if(a[j]>a[j+1])
{
a[j] = a[j]^a[j+1];
a[j+1] = a[j+1]^a[j];
a[j] = a[j]^a[j+1];
}
}
int main()
{
int i,m,n;
int *p = new int[n];
scanf("%d%d",&n,&m);
for(i=0;i<n;i++)
scanf("%d",&p[i]);
sort(p,n);
for(i=0;i<m-1;i++)
printf("%d ",p[i]);
printf("%d\n",p[m-1]);
delete []p;
return 0;
}