使用stl :: map和stl :: unordered_map对包含大量重复元素的数组数据进行排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用stl :: map和stl :: unordered_map对包含大量重复元素的数组数据进行排序相关的知识,希望对你有一定的参考价值。

请从geeksforgeeks https://www.geeksforgeeks.org/how-to-sort-a-big-array-with-many-repetitions/查看此问题的解决方案2.它使用stl :: map并说解决方案是O(n + mlogm),它假定stl :: map插入和查找是在O(1)时间。它是否正确?

给定链接中的代码是:

void sort(int arr[], int n) 
 
   //1. Create an empty hash table. 
    map<int, int> count; 

    //2. Input array values are stores as key and their 
    //counts are stored as value in hash table. 
    for (int i=0; i<n; i++) 
        count[arr[i]]++; 

    map<int, int>::iterator it; 
    int index = 0; 

    //3. Consider all keys of hash table and sort them. 
    //In std::map, keys are already sorted. 

    //4. Traverse all sorted keys and print every key its value times. 
    for (it=count.begin(); it!=count.end(); ++it) 
     
        while(it->second--) 
        arr[index++]=it->first; 
     
 
答案

这只是std::unordered_map的一个错字,其操作平均为O(1)。

以上是关于使用stl :: map和stl :: unordered_map对包含大量重复元素的数组数据进行排序的主要内容,如果未能解决你的问题,请参考以下文章

STL详解—— unordered_setunordered_map的介绍及使用

Leetcode-1 两数之和(STL, hashTable, unordered_map)

Leetcode-1 两数之和(STL, hashTable, unordered_map)

在 STL 中使用 unordered_map 存储键值对

(转载)STL map与Boost unordered_map的比较

STL详解(十三)—— 用一个哈希表同时封装出unordered_map和unordered_set