谷歌的变种murmurHash算法

谷歌的变种murmurHash算法谷歌变种murmurHash的编写与测试#include#include#include#include#include#include#includeusingnamespacestd;boolCheckLittleEndin();uint32

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

谷歌变种murmurHash的编写与测试

#include<iostream>
#include<stdint.h>
#include<cstring>
#include<time.h>
#include<iterator>
#include<vector>
#include<algorithm>
using namespace std;
bool CheckLittleEndin();
uint32_t DecodeFixed32(const char* data);
uint32_t Hash(const char* data,int size,int seed);
int main(){
  const char* data="assdascxasasdz" ;
  vector<uint32_t> data_;
  vector<uint32_t>::iterator iter;
  vector<uint32_t>::iterator temp;
  int size = strlen(data);
  clock_t start = clock();
  for(int i = 1 ;i<1000000; i++){
    data_.push_back(Hash(data,size,i));
  }
  sort(data_.begin(),data_.end());
  for(iter = data_.begin();iter!=data_.end();iter++){
    cout<<*iter<<endl;

}
  temp = unique(data_.begin(),data_.end());
  cout<<"the last is"<<*(--temp);
  clock_t end = clock();
  cout<<endl;
  cout<<double(end-start)<<"ms";
  return 0;
}
bool CheckLittleEndin(){
  int test = 1;
  int temp = (unsigned char) test;

  if(test) return true;
  else return false;

}
uint32_t DecodeFixed32(const char* data){
  int result;
  if(CheckLittleEndin()){
    memcpy(&result,data,sizeof(result));
  }
  else{
    return ((static_cast<uint32_t>(static_cast<unsigned char>(data[0])))
         | (static_cast<uint32_t>(static_cast<unsigned char>(data[1])) << 8)
         | (static_cast<uint32_t>(static_cast<unsigned char>(data[2])) << 16)
         | (static_cast<uint32_t>(static_cast<unsigned char>(data[3])) << 24));
  }
}
//32bit
uint32_t Hash(const char* data, int size ,int seed){
  const uint32_t r = 24;
  const int m = 0xc6a4a793;
  const char* limit = data + size;

  uint32_t h = seed^(size*m);

  while(data+4<limit){

    uint32_t w = DecodeFixed32(data);
    data = data+4;

    h += w;  //循环操作;
    h *= m;
    h ^= (h >> 16);

  }
  switch (limit - data) {
    case 3:
      h += static_cast<unsigned char>(data[2]) << 16;
      break;
    case 2:
      h += static_cast<unsigned char>(data[1]) << 8;
      break;
    case 1:
      h += static_cast<unsigned char>(data[0]);
      h *= m;
      h ^= (h >> r);  //仅剩余一字节;
      break;
  }
  return h;
}


//你可以修改参数自己测试下,散列性与且计算很高效!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/180437.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 河北专接本计算机专业课平均分,2019年河北专接本招生数据及通过率分析[通俗易懂]

    河北专接本计算机专业课平均分,2019年河北专接本招生数据及通过率分析[通俗易懂]每天都会有很多的同学咨询小编河北专接本各个专业的通过率,其实对于单科的通过率来说并不能作为你专接本选专业的首要因素,因为专接本的分数充满的随机性,同学们往往会被某专业专业的高通过率所迷惑从而做出错误的选择。那么易学仕小编整理了一下河北专接本2019年的通过率,仅供大家参考!经管类是财经类和管理类,19年刚刚合并为经管类!这个大类一共招收2667人,参加考试达到100分以上的人数是8686人,整体通…

  • MySQL字符串分割_c语言中如何截取字符串

    MySQL字符串分割_c语言中如何截取字符串有分隔符的字符串拆分题目要求数据库中num字段值为:实现的效果:需要将一行数据变成多行实现的SQLSELECTSUBSTRING_INDEX(SUBSTRING_INDEX(‘7654,7698,7782,7788′,’,’,help_topic_id+1),’,’,-1)ASnumFROMmysql.help_topic…

  • mac pycharm安装设置_入门python,这样操作,简单易学(安装教程)「建议收藏」

    mac pycharm安装设置_入门python,这样操作,简单易学(安装教程)「建议收藏」首次接触python,感觉比PHP更加实用,适用性更佳广泛。不局限于网站建设,搭建服务器。选择性更佳广。接下来告诉新手宝宝们,怎么在mac和window上安装python软件Pycharm一、Pycharm安装教程:Pycharm官网下载地址:https://www.jetbrains.com/pycharm/1、点击官网地址下载—如图所示,点击下面2,选择你电脑对应的系统下载。window电脑就…

  • iPhone4s完美越狱_苹果4越狱工具

    iPhone4s完美越狱_苹果4越狱工具通常我们所说iPhone激活成功教程实际上包含了很多内容在里面,激活成功教程的目的有很多,例如使用第三方软件,可以打电话,可以使用YouTube等等,其最终目的是可以实现所有的功能。在整个过程中的任何一步都可以叫做是激活成功教程,所以如果有网友单纯问如何激活成功教程这类问题实际上是很难回答的,因为不知道网友关心的是针对哪一部分的激活成功教程。因此本教程中凡是用到激活成功教程这个词的地方,都泛指各种激活成功教程方法,而对于特定的激活成功教程目的则用专门的词来描述…

  • oracle修改sequence最大最小值_oracle取最大值的记录

    oracle修改sequence最大最小值_oracle取最大值的记录序列是oracle提供的用于生成一系列唯一数字的数据库对象,序列会自动生成顺序递增的序列号,以实现自动提供唯一的主键值,系列可以在多个用户并发环境中使用,并且可以为所有用户生成不重复的顺序数字,而不需要任何额外的I/O开销。创建序列序列和视图一样,并不占用实际的存储空间,只是在数据字典中保存他的定义信息。当创建序列时必须拥有createsequence系统权限。语法格式:createsequ…

    2022年10月18日
  • PyTorch踩坑指南(1)nn.BatchNorm2d()函数

    PyTorch踩坑指南(1)nn.BatchNorm2d()函数前言最近在研究深度学习中图像数据处理的细节,基于的平台是PyTorch。心血来潮,总结一下,好记性不如烂笔头。BatchNormalization对于2015年出现的BatchNormalization1,2018年的文章GroupNormalization2在Abstract中总结得言简意赅,我直接copy过来。BatchNormalization(BN)isamile…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号