突然感覺快排都不會寫了,只是回憶一下,有待完善。。。
#include <cstdio>
#include <cstdlib>
#include <algorithm>
const int M = 100;
//稀疏矩陣的三元組順序表存儲表示
struct Triple
{
int i;
int j;
int e;
};
struct TSMatrix
{
Triple data[M + 1];
int r_num, c_num, t_num;
};
int Comp(const void *a, const void *b)
{
struct Triple *c = (Triple *)a;
struct Triple *d = (Triple *)b;
if(c->j != d->j)
{
return c->j - d->j;
}
else
{
return c->i - d->i;
}
}
int main()
{
TSMatrix m;
m.t_num = 0;
scanf("%d %d", &m.r_num, &m.c_num);
for (int i = 0; i < m.r_num; i++)
{
for (int j = 0; j < m.c_num; j++)
{
int temp;
scanf("%d", &temp);
if (temp != 0)
{
m.data[m.t_num].i = i;
m.data[m.t_num].j = j;
m.data[m.t_num].e = temp;
m.t_num++;
}
}
}
//printf("%d\n ", m.t_num);
qsort(m.data, m.t_num, sizeof(m.data[0]), Comp);
for (int i = 0; i < m.t_num; i++)
{
printf("%d ", m.data[i].e);
}
printf("\n");
return 0;
}
/*
3 4
3 0 0 5
0 -1 0 0
2 0 0 0
*/