算法:
类似于桶排序的计数,只不过现在采用结构体计数
时间复杂度:
在于排序时间浪费:O(nlogn)
#include <bits/stdc++.h>
using namespace std;
const int N=1010;
/*结构体*/
struct Node{
int key;
int val;
}node[N];
/*比较val的值*/
bool comp(Node n1,Node n2){
if(n1.val>n2.val){
return true;
}else if(n1.val==n2.val){
return n1.key<n2.key;
}else
return false;
}
int main(){
int n,x;
cin>>n;
for(int i=1;i<=n;i++){
cin>>x;
node[x].key=x;
node[x].val++;
}
//输出
sort(node,node+1001,comp);
int len=0;
while(node[len].val!=0){
cout<<node[len].key<<" "<<node[len].val<<endl;
len++;
}
return 0;
}