|
[x]
Posted via EE Mobile
|
||
Search, ask, and monitor your questions on the go with EE Mobile. Visit Experts Exchange from your mobile device and never be out of touch again. |
||
| Question |
|
[x]
Attachment Details
|
||
|
[x]
The Solution Rating System
|
||
With so many solutions, how can you tell which solutions are most likely to help you and which ones are not? To provide you with a tool to use, we rate our solutions based on various elements that most accurately determine if a solution is a quality solution. To explain what factors affect the solution rating, here are the elements we take into consideration when formulating our solution rating.
Your Input Matters If you have any suggestions that you would like to make for our rating system, please ask a question in the Suggestions Zone of Community Support. Thank you! |
||
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: |
// ************************************************************
// This is just a section which is supposed to generate the "CustomHash" collection.
//
// The general idea is that you'd follow this path to get back an object:
// HashListHeader -> Bucket_keys -> BucketObjects
// By the way, I have been using the following to test the speed of this block:
/*
public static System.Diagnostics.Stopwatch s = new System.Diagnostics.Stopwatch();
s.Reset();
s.Start();
for (int i = 0; i < 10; i++)
{
HashListOfLists(1000000);
}
s.Stop();
textBox1.Text += ("result = " + s.Elapsed + Environment.NewLine);
*/
// ************************************************************
// 4294967298 - the value required to get hash int from hash long (you can also get it by maxlong / maxint!)
// 7700 - trial and error figure - seems to provide optimum balance for hash collisions, between the length of collision list and length of hash list
static long long2int_denominator = (4294967298 * 7700);
public static int GetNewArraySize(int OldSize, int nextIndex)
{
double incrementer = 0.0;
if (OldSize < 100) incrementer = 2;
else incrementer = 1.5;
int newSize = (int)((double)OldSize + ((double)OldSize * incrementer));
if (nextIndex >= newSize)
{
newSize = (int)((double)nextIndex + ((double)nextIndex * incrementer));
}
return newSize;
}
public static void HashListOfLists(int new_terations)
{
int[] HashListHeader = new int[278894]; // the size of this would never go higher than 278894
// because 2147483647 (aka int!) / 7700 = 278893
// see long2int_denominator defenition...
List<List<long>> Bucket_keys = new List<List<long>>();
List<List<string>> Bucket_objects = new List<List<string>>(); // to be replaced with the object...
//populate the list with new lists.
int while_loop1 = 0;
while (while_loop1 < new_terations)
{
Bucket_keys.Add(new List<long>());
Bucket_objects.Add(new List<string>());
while_loop1++;
}
Random r = new Random();
int current_list; // create some random stuff to test this
long value;
int int_hash_value;
for (int i = 0; i < new_terations; i++)
{
value = (long)((r.NextDouble() * 2.0 - 1.0) * long.MaxValue); // create some random value to test
int_hash_value = (int)(Math.Abs(value) / long2int_denominator); // get the hashed value ready to be inserted into the hash list header.
current_list = HashListHeader[int_hash_value];
if (current_list == null || current_list == 0)
{
HashListHeader[int_hash_value] = i;
current_list = i;
}
Bucket_objects[current_list].Add(i.ToString());
Bucket_keys[current_list].Add(value);
}
}
|
Advertisement
| Hall of Fame |