哈希函数是一种对应关系,是一个映射,能将关键词转为哈希函数值,便于更快的查询。当然对不同的关键字可能得到同一哈希地址,即,key1!=key2,而f(key1)=f(key2)。这种现象称为冲突。一般情况下,冲突只能尽可能的少,而不能完全避免。
对于关键词集合中任意一个关键词,经哈希函数映射到地址中任何一个地址的概率是相等的,称此类哈希函数为均匀哈希函数,这种算比好的哈希函数。一般而言,构造哈希函数的方法有以下几种: (更多…)
哈希函数是一种对应关系,是一个映射,能将关键词转为哈希函数值,便于更快的查询。当然对不同的关键字可能得到同一哈希地址,即,key1!=key2,而f(key1)=f(key2)。这种现象称为冲突。一般情况下,冲突只能尽可能的少,而不能完全避免。
对于关键词集合中任意一个关键词,经哈希函数映射到地址中任何一个地址的概率是相等的,称此类哈希函数为均匀哈希函数,这种算比好的哈希函数。一般而言,构造哈希函数的方法有以下几种: (更多…)
1 快速排序(QuickSort)
快速排序是一个就地排序,分而治之,大规模递归的算法。从本质上来说,它是归并排序的就地版本。快速排序可以由下面四步组成。
(1) 如果不多于1个数据,直接返回。
(2) 一般选择序列最左边的值作为支点数据。
(3) 将序列分成2部分,一部分都大于支点数据,另外一部分都小于支点数据。
(4) 对两边利用递归排序数列。
快速排序比大部分排序算法都要快。尽管我们可以在某些特殊的情况下写出比快速排序快的算法,但是就通常情况而言,没有比它更快的了。快速排序是递归的,对于内存非常有限的机器来说,它不是一个好的选择。
2 归并排序(MergeSort)
归并排序先分解要排序的序列,从1分成2,2分成4,依次分解,当分解到只有1个一组的时候,就可以排序这些分组,然后依次合并回原来的序列中,这样就可以排序所有数据。合并排序比堆排序稍微快一点,但是需要比堆排序多一倍的内存空间,因为它需要一个额外的数组。
(更多…)