哈希表减少时间复杂度

哈希表是可以减少时间复杂度的。

因为哈希表物理结构是数组,在没有冲突的情况下,查找时间是O(1),建表时间可能是O(n)。

为什么把普通数组换成hash表就能减少复杂的呢

例如

//数组形式
for(int i=0;i<n;++i)
    for(int j=0; j<n;++j)
           printf ( num[i]==num[j]);

//hash表
map<int,int> mp;
for(int i=0;i<n;++i){
    printf( mp.count( num[i]);
    ++mp[num[i]];
    }
 
    

第一个是双重循环 复杂的 O(n^2) 

第二个复杂度是 O(n)

原因在于    hash表可以用关键字查找个数,数组需要按存储顺序枚举比较 

 

posted @ 2021-07-08 13:46  失败者_ant  阅读(348)  评论(0编辑  收藏  举报