Input:
第一行,a、b兩個鏈表元素的數量N、M,用空格隔開。 接下來N行是a的數據 然后M行是b的數據 每行數據由學號和成績兩部分組成
Output:
按照學號升序排列的數據
Sample Input:
2 3 5 100 6 89 3 82 4 95 2 10
Sample Output:
2 10 3 82 4 95 5 100 6 89
解題思路:
1、用兩個for循環來給兩個鏈表由小到大排序
for(i=0;i<m+n,i++)
{
for(j=i+1;j<m+n;j++)
{
if(s[i].num>s[j].num)
{
t=s[j];
s[j]=s[i];
s[i]=t;
}
}
}
2、使用冒泡排序,使數列由小到大
for(i=1;i<m+n;i++)
{
for(j=0;j<m+n-i;j++)
{
if(s[j].num>s[j+1].num)
{
t=s[j+1];
s[j+1]=s[j];
s[j]=t;
}
}
}
完整代碼:
#include <stdio.h> struct Student{ int num; int score; }; void main() { int i,j,m,n; scanf("%d%d",&n,&m); struct Student s[m+n],t; for(i=0;i<m+n;i++) { scanf("%d %d",&s[i].num,&s[i].score); } for(i=0;i<m+n;i++) { for(j=i+1;j<m+n;j++) { if(s[i].num>s[j].num) { t=s[j]; s[j]=s[i]; s[i]=t; } } } for(i=0;i<m+n;i++) { printf("%d %d\n",s[i].num,s[i].score); } }