模板函数+运算符的重载
#include<iostream> using namespace std; #define SIZE 5 class complex { public: int real; int imag; public: inline int complex::operator <(const complex &c) { return real < c.real; } inline int complex::operator >(const complex &c) { return real > c.real; } }; template<class ElementType> void sort(ElementType a[], int len) { for(int i=0; i<len; i++) for(int j=i+1; j<len; j++) { if(a[i] > a[j]) { ElementType temp = a[j]; a[j] = a[i]; a[i] = temp; } } } int main() { int n = 5; int a[SIZE]; complex vv[SIZE]; for(int i = 0; i < n; i++) { scanf("%d%d", &vv[i].real, &vv[i].imag); } sort(vv,SIZE); for(int i=0; i<n; i++) printf("@%d %d\n", vv[i].real, vv[i].imag); getchar(); system("pause"); return 0; }