zoukankan      html  css  js  c++  java
  • bloom filter

    #include <stdio.h>
    #include <stdlib.h>
    void set_bitmap(char* b, unsigned int i) {
        b[i / 8] |= 1 << (i & 7);
    }
    void unset_bitmap(char* b, unsigned int i) {
        b[i / 8] &= ~(1 << (i & 7));
    }
    char get_bitmap(char* b, unsigned int i) {
        return b[i / 8] & (1 << (i & 7)) ? 1 : 0;
    }
    char* create_bitmap(unsigned int n) {
        return malloc((n + 7) / 8);
    }
    unsigned int sdbm(char* str) {
      unsigned int hash = 0;
      while(*str != 0) {
        hash = ((hash << 6) + (hash << 16) - hash) + *str++;
      }
      return hash;
    }
    char* bloomFilter; int size;
    void createBloomFilter(unsigned int n) {
      bloomFilter = create_bitmap(n);
      size = n;
    }
    void addElement(char* str) {
      set_bitmap(bloomFilter, sdbm(str) % size);
    }
    char checkElement(char* str) {
      return get_bitmap(bloomFilter, sdbm(str) % size);
    }
    int main() {
      createBloomFilter(1024);
      addElement("hello");
      addElement("world");
      addElement("please");
     
      printf("%d", checkElement("please"));
      printf("%d", checkElement("world")); 
      printf("%d
    ", checkElement("checkout"));
      return 0;
    }
    
  • 相关阅读:
    HDU 3466(01背包变种
    HDU 2639(01背包第K大)
    POJ 2184(01背包)(负体积)
    UVA 562(01背包)
    UVA 624(01背包记录路径)
    SQL总结二
    oracle--知识点汇总1
    时间日期----java
    字符串、数值----转换
    字符串反转----示例
  • 原文地址:https://www.cnblogs.com/littlepage/p/15208498.html
Copyright © 2011-2022 走看看