"use strict"; var tab = window.open(); myMain(); // // hash function demo // collects hash hits and graphs collision deistributions // // does not implement other hash table operations // function myMain() { var TABMAX = 191; // some primes 79 97 113 199 397 977 1987 4999 10007 var ht = makeHashTab(TABMAX); var nElts = 700; var dist = collectHashes(nElts,ht); graphDist(dist); tab.document.close(); } function makeHashTab( N ) { // constructor for hash table var hashes = { // object containing various hash functions to test // install one of these in the hash table object below alphaFirst: function(key,max) { // hash for string keys // this returns 0 - 25 position in alphabet of first character //var factor = 299; var factor = 1; var hval=0; hval = factor * (key[0].charCodeAt() - "a".charCodeAt() ) ; hval %= max; if (hval<0) hval += max; return hval; }, alpha137: function(key,max) { // hash for string keys // this combines first, third, 7th characters // assuming the key is at least 7 characters long var factor = 1; var hval=0; hval = (key[0].charCodeAt() - "a".charCodeAt() ) ; hval += (key[2].charCodeAt() - "a".charCodeAt() ) ; hval += (key[7].charCodeAt() - "a".charCodeAt() ) ; hval *= factor; hval %= max; if (hval<0) hval += max; return hval; }, alpha137Scaled: function(key,max) { // hash for string keys // this combines first, third, 7th characters // assuming the key is at least 7 characters long var factor = 47; var hval=0; hval = 43* (key[0].charCodeAt() - "a".charCodeAt() ) ; hval += 113 *(key[2].charCodeAt() - "a".charCodeAt() ) ; hval += 10007 * (key[7].charCodeAt() - "a".charCodeAt() ) ; hval *= factor; hval %= max; if (hval<0) hval += max; return hval; }, prettyGoodString: function(key,max) { // hash for string keys // similar to the one used in Java var hval=0; for (var i=0; i
"); for (var k=0; k
"); } function genString(size){ if (size===0) { return ranAlpha(); } else { var str = ""; for (var i=0; i