QuickSort模板
#include <iostream>
using namespace std;
struct node
{
int index;
char name[20];
};
node data[100];
template<typename T>
void QuickSort(T* Array,int left,int right,bool (*com)(T* a,T* b))
{
int low,high;
T key;
if(left>=right) return;
low=left,high=right;
key=Array[left];
while(low<high)
{
while(low<high && com(&Array[high],&key)) high--;
Array[low]=Array[high];
while(low<high && com(&key,&Array[low])) low++;
Array[high]=Array[low];
}
Array[low]=key;
QuickSort(Array,left,low-1,com);
QuickSort(Array,low+1,right,com);
}
bool com(int* a,int* b)
{
return *a>=*b;
}
bool com1(node* a,node* b)
{
return a->index> b->index;
}
int main()
{
int n,i;
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++) scanf("%d %s",&data[i].index,data[i].name);
QuickSort(data,0,n-1,com1);
for(i=0;i<n;i++) printf("%d %s\n",data[i].index,data[i].name);
printf("\n");
}
return 0;
}