小泉的难题
题目描述
机械实验班有个同学叫小泉,有一天数学老师给小泉布置了一道个人作业,给小泉 M M M( M ≤ 100 M\leq100 M≤100)组数据,每组数据有 N N N个正整数( N ≤ 100 N\leq 100 N≤100)让他把每组的 N N N个数按升序排成一行,但由于数的数目比较多,人工做很费时,于是小泉就想到了喜欢编程序的你,请你帮他解决这个问题,可不要让他失望噢。
输入描述
输入包括 M + 1 M+1 M+1行,第一行是两个正整数 M M M、 N N N; M M M表示总共多少组数据,下面 M M M行每行包含 N N N个正整数。(输入数据之间会用空格隔开)
输出描述
输出包括 M M M行,每行分别对应输入中 M M M组数据的升序序列,数与数之间用一个空格隔开。
样例
输入
2 3
1 3 2
4 2 6
输出
1 2 3
2 4 6
来源
C语言实验8——指针的应用
C++实现
#include <iostream>
using namespace std;
void insertSort(int *ptr, int n) {
int *p_end,*p,*q,temp;
p=ptr;
p_end=p+n;
for(p++;p<p_end;p++){
if(*p<*(p-1)){
temp=*p;
for(q=p-1;q>=ptr&&temp<*q;q--)
*(q+1)=*q;
*(q+1)=temp;
}
}
}
int main() {
int m,n,*p,temp;
cin>>m>>n;
p=(int *)malloc(n*sizeof(int));
while(m--){
temp=n;
while(temp--){
cin>>*(p++);
}
p-=n;
insertSort(p,n);
temp=n-1;
while(temp--){
cout<<*(p++)<<" ";
}
cout<<*(p++)<<endl;
p-=n;
}
free(p);
return 0;
}