Не уверен, почему квадратичное зондирование не поможет разрешить коллизии при хешировании.C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Не уверен, почему квадратичное зондирование не поможет разрешить коллизии при хешировании.

Сообщение Anonymous »

У меня есть программа, состоящая из двух файлов, у меня есть как квадратичная, так и линейная функция зондирования для разрешения коллизий во время хеширования, и моя линейная функция работает нормально, но я не уверен, почему квадратичная функция не работает. У меня есть результаты, которые следует распечатать

Код: Выделить всё

Linear:
Hash table size: 8087
Number of collisions with a = 33: 6240629
Hash table size: 8087
Number of collisions with a = 37: 4817906
Hash table size: 8087
Number of collisions with a = 39: 6686453
Hash table size: 8087
Number of collisions with a = 41: 7423747Quadratic:
Hash table size: 8087
Number of collisions with a = 33: 1145326
Hash table size: 8087
Number of collisions with a = 37: 1182048
Hash table size: 8087
Number of collisions with a = 39: 1127766
Hash table size: 8087
Number of collisions with a = 41: 1152208
Instead, I get the following result for my output.

Hash table size : 8087
Number of collisions with a = 33: 1134428

Hash table size : 8087
Number of collisions with a = 37: 1166882

Hash table size : 8087
Number of collisions with a = 39: 1184105

Hash table size : 8087
Number of collisions with a = 41: 1159074
Я говорю о количестве столкновений. Мне нужно, чтобы значения совпадали, и они должны совпадать, потому что они вводят один и тот же код, и оба должны использовать квадратичное зондирование. Ниже приведены мои два файла. Буду ОЧЕНЬ признателен за любую помощь. застрял на этом весь день.

Код: Выделить всё

#include 
#include 
#include 
#include 
#include 
#include "HashType - Copy.h"

using namespace std;

void buildHashTable(ifstream &inFile,
HashType &hashTable,
int type,
int Prime)
{
string word;
int length;
if (inFile.is_open())
{
while (inFile >> word)
{
length = word.size();

for (int i = 0; i < length;)
{
unsigned char ch = word[i]; // Cast to unsigned char to handle characters safely
if (ch < ' ' || ispunct(ch))
{ // Check for control characters and punctuation
word.erase(i, 1);
length = word.length(); // Update length after modifying the string
}
else
{
++i; // Only increment if no deletion was made
}
}
if (type == 1)
{
hashTable.InsertItemLinear(word, Prime);
}

if (type == 0)
{
hashTable.InsertItemQuadratic(word, Prime);
}

}
}

cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/78422598/not-sure-why-quadratic-probing-wont-work-to-resolve-collisions-when-hashing[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как я могу реализовать линейное зондирование в C ++?
    Anonymous » » в форуме C++
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Android.security.KeyStoreException: неподдерживаемая цель при хешировании – использование PURPOSE_SIGN
    Anonymous » » в форуме Android
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Цель выборки при хешировании [закрыто]
    Anonymous » » в форуме JAVA
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Как получить стабильные коллизии с помощью интеграции Verlet?
    Anonymous » » в форуме C++
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Коллизии верхних и нижних колонтитулов
    Anonymous » » в форуме CSS
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»