2009-07-01 2 views
0

У меня много идентификаторов, и я хочу сохранить их для временной цели и вам нужно выполнить поиск этой записи для какой-либо операции. Какая структура данных хороша для этой операции в Perl? Должен ли я использовать хэш или массив, или есть ли какой-либо другой модуль, который я мог бы использовать, чтобы сделать это эффективно?Наилучшая структура данных для поиска записи

Записи 4343, 34343, 34343, 2323, 232, ....

+0

Непонятно, что вы хотите сделать. Возможно, вам захочется описать, какие данные вы хотите сохранить и как вы хотите получить к нему доступ. – hillu

+0

У меня есть 10000 записей и хранятся в одном файле strcuture и вы хотите выполнить поиск в этой записи. – joe

+0

У меня есть идентификаторы и возвращаются из базы данных d и хранятся в одном файле strtucure и поиск некоторых записей. – joe

ответ

3

Немного больше информации о вашем макете записей поможет вам помочь людям. Если ваши записи связаны с идентификационными номерами, то вы можете использовать хэш с «ид» в качестве ключа и сохранить запись в виде строки или ссылку на массив в качестве значения хэш-

my %records; 
$records{ $id_number } = "Record for $id_number"; 
## OR 
$records{ $id_number } = ['Record', 'for', $id_number]; 

Это позволит вам для поиска id со сложностью O (1) и легко манипулировать соответствующей записью.

# Assuming the records are stored in @records 
for my $record (@records) { 
    $recStore{$record}++; 
} 

# To search for a record 
my $recToFind = 4343; 
my $recExists = $recStore{$recToFind} || 0; 

Ключи хэша являются идентификаторы извлекаются из базы данных и соответствующие значения, сколько раз был найден идентификатор, так что для повторяющихся записей $ recExists будет больше 1, и не существует он будет равен 0. Чтобы получить список всех идентификаторов, отсортированных численно, вы можете написать

my @sortedID = sort {$a <=> $b} keys %records; 
+0

Как сохранить и идентификаторы и поиск идентификатора .. например. Я хочу искать 4343 для сохраненного. Не могли бы вы объяснить, пожалуйста, – joe

+0

Не могли бы вы включить информацию о какой-либо одной записи? Это позволило бы мне сформулировать механизм хранения, подходящий для задачи. – aks

+0

Я получаю значение в $ Reocrd = 10 – joe

Смежные вопросы