map桶排序(nlogn)

根据map数组下标可以是long long或者是string以及它以键值排序的特性,可以利用它实现一个高级桶排序

#include<bits/stdc++.h>
using namespace std;
map<long long,int>m;
long long ton[10000],top;

int main() {
    
    
	int n,a;
	cin>>n;
	for(int i=1; i<=n; i++) {
    
    
		cin>>a;
		m[a]++;//计a存在的数量
	}
	map<long long,int>::iterator it;
	for(it=m.begin(); it!=m.end(); it++) {
    
    
		while(it->second) {
    
     //有多个it->first
			ton[++top]=it->first;
			it->second--;
		}
	}
	for(int i=1; i<=top; i++)cout<<ton[i]<<" ";
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_43602607/article/details/109555515