美文网首页
算法笔记(2)| 散列

算法笔记(2)| 散列

作者: yzbkaka | 来源:发表于2019-08-03 20:41 被阅读0次

散列就是指将元素通过一个函数转换为一个整数,并且该整数能够尽可能地唯一代表该元素。

1.整数转换

设有一个数组M,一个数组N,判断数组N中的哪些数字在数组M中出现过,,则可以用如下方法解决:

#include<stdio.h>
#include<iostream>
using namespace std;
int main(){
    int m,n,x;
    bool isExist[1000]={false};
    for(int i=0;i<n;i++){
        cin>>x;
        isExits[x]=true;
    }
    for(int i=0;i<m;i++){
        cin>>x;
        if(isExist[x]==false){
            cout<<"not exits";
        } 
        else{
            cout<<"exist";
        }
    }
    return 0;
}

2.字母转换

当数组中只有字母时,则可以将每一个字母自定义为一个数字,例如:[A,Z]——>[0,25],[a,z]——>[26,51]。

int hashFunc(char s[],int len){  //字符串和字符串的长度 
    int id;
    for(int i=0;i<len;i++){
        if(s[i]>='A' && s[i]<='Z'){  //如果是大写字母 
            id=id*52+(s[i]-'A');
        }
        else{  //如果是小写字母 
            id=id*52+(s[i]-'a')+26;
        }
    } 
    return id;
}

3.字符串转换

当一个数组中既有数也有字母时,可以按照字母转换的方法,也将数字自定义有单独的数来对应,即[A,Z]——>[0,25],[a,z]——>[26,51],[0,9]——>[52,61]:

int hashFunc(char s[],int len){
    int id;
    for(int i=0;i<len;i++){
        if(s[i]>='A' && s[i]<='Z'){  //如果是大写字母 
            id=id*62+(s[i]-'A');
        }
        if(s[i]>='a' && s[i]<='z'){  //如果是小写字母 
            id=id*62+(s[i]-'a')+26;
        }
        else{
            id=id*62+(s[i]-'0')+52;
        }
    }
    return id;
}

相关文章

  • 算法笔记(2)| 散列

    散列就是指将元素通过一个函数转换为一个整数,并且该整数能够尽可能地唯一代表该元素。 1.整数转换 设有一个数组M,...

  • HashMap深度分析疑问

    hashMap底层是基于散列算法实现,散列算法分为散列再探测和拉链式。hashmap使用了拉链式散列算法,在jdk...

  • MD5 , SHA1 , SHA256 比较

    MD5 SHA1 SHA2 都是散列算法 ,什么是散列算法? 什么是SHA? 异同点 MD5SHA1SHA2-2...

  • 密码安全

    本文介绍密码安全相关的加密与散列算法。 目录 散列算法 加密算法对称加密非对称加密 散列算法 Hashing 是使...

  • 哈希算法

    一,概念 前面涉及到散列表,散列函数,散列算法。那么和哈希算法又是什么关系,其实散列函数对应的算法就是哈希算法。 ...

  • 代码小工蚁的#《算法图解》#学习笔记-C5散列表

    代码小工蚁的#《算法图解》#学习笔记-C5散列表C5 散列表hash tables 一、散列函数hash func...

  • shiro权限控制学习---编码/解码

    散列算法 散列算法一般用于生成数据的摘要信息,是一种不可逆的算法,一般适合存储密码之类的数据,常见的散列算法如MD...

  • IOS 逆向开发(二)密码学 HASH

    1. HASH算法简介 1.1 HASH是什么? Hash算法(也叫散列算法) Hash,一般翻译做“散列”,也有...

  • 4 查找

    静态查找 顺序查找法 折半查找法 散列 散列的概念 散列函数 冲突解决方法 散列算法设计与分析

  • Hash 算法

    散列算法(Hash Algorithm),又称哈希算法,杂凑算法,是从任意文件中创造小的数字[指纹]的方法。散列算...

网友评论

      本文标题:算法笔记(2)| 散列

      本文链接:https://www.haomeiwen.com/subject/belsdctx.html