再谈哈希函数与线性探测再散列

来源:互联网 发布:简述域名的含义 编辑:程序博客网 时间:2024/05/17 05:51

        在上一篇文章的叙述中,作者用极其鄙视的态度阐述了线性探测再散列的思想,具体内容如下面的链接,在接下来的叙述中,鄙人将用一段低端的代码来具体的鄙视一下那些没事拿线性探测再散列来装B的人。

       传送门:浅谈哈希函数与线性探测再散列


      废话不多说,我们先来看下这个低端的代码吧~

//CHashTable.h  By tinyelegant

class CHashTable{public:CHashTable(void);CHashTable(int size);~CHashTable(void);private:int  m_iSize;int *m_pList;public:void CreatTable(int size);int  HashKey(int element);void Hash_LinkAddress(int *parray);void Hash_OpenAddress(int *parray);};

//CHashTable.cpp部分代码:线性探测再散列算法细节实现 By tinyelegant

void CHashTable::Hash_OpenAddress(int *parray){int *status=new int[m_iSize];int *copyarray=new int[m_iSize];for (int i=0;i<m_iSize;i++){*(status+i)=0;*(copyarray+i)=*(parray+i);}bool flag=true;int j=1;for (int i=0;i<m_iSize;i++){if (status[HashKey(copyarray[i])]==0){status[HashKey(copyarray[i])]=1;parray[HashKey(copyarray[i])]=copyarray[i];}else {while(flag){if (status[(HashKey(copyarray[i])+j)%m_iSize]==0){parray[(HashKey(copyarray[i])+j)%m_iSize]=copyarray[i];status[(HashKey(copyarray[i])+j)%m_iSize]=1;flag=false;j=1;}else{flag=true;j++;}}}}delete []status;delete []copyarray;}

        好了,相信大家看了上面的代码之后都崩溃了,这无语的格式和混乱的逻辑已经让我们领悟到了这种每天把线性探测再散列挂在嘴边的精髓~

        当然,本着不打击本代码的作者的精神,鄙人截取了该程序中格式最清晰,内容最明了的部分。说到这,我们还是不要专门提那位代码的作者了,不过这样貌似不太厚道,所以还是有什么想说的就直接去喷他吧~

    下附赠传送门:(赶紧去喷他吧)

           点我来喷他

        诚然,我们要做有素质的人,不能喷了他连他是谁都不知道,所以,请牢牢的记住(tinyelegant)这个ID,当你写出类似的代码的时候,不要忘了你曾经鄙视过一个类似的人,所以,你需要反省自己的代码了~

        写到了这个地方突然发现感觉上似乎是跑题了的样子,但是就这样吧~

注:恶搞文章请“勿”对号入座



原创粉丝点击