問題描述:一個足夠大的二維數組a[ ][2]中,存放了n對坐标,例如第一個坐标是(5,6),那麼a[0][0]=5,a[0][1]=6,依此類推,将存放的這些坐标對,按照縱坐标從小到大的順序進行排列。
輸入:
(1,25)
(20,36)
(4,18)
(23,15)
(22,5)
輸出:
(22,5)
(23,15)
(4,18)
(1,25)
(20,36)
代碼如下:
#include <stdio.h>
#define max 100
double A[max][2]={1,25,20,36,4,18,23,15,22,5};
void sort(double a[][2],int n)
{
int i,j,k;
double t;
for(i=0;i<n-1;++i)
{
k=i;
for(j=i+1;j<n;++j)
{
if(a[k][1]>a[j][1])
k=j;
}
if(k!=i)
{
for(j=0;j<2;++j)
{
t=a[k][j];
a[k][j]=a[i][j];
a[i][j]=t;
}
}
}
}
int main(int argc, const char * argv[]) {
// insert code here...
printf("Hello, World!\n");
int n=5;
int i;
printf("排序前:\n");
for(i=0;i<n;i++)
{
printf("(%f,%f)\n",A[i][0],A[i][1]);
}
sort(A,n);
printf("排序後:\n");
for(i=0;i<n;i++)
{
printf("(%f,%f)\n",A[i][0],A[i][1]);
}
return 0;
}
運作結果: