Показано с 1 по 3 из 3

Тема: Поиск в массиве. Оптимальный алгоритм.

  1. #1
    Пользователь
    Регистрация
    30.11.2012
    Адрес
    40RUS
    Сообщений
    316

    По умолчанию Поиск в массиве. Оптимальный алгоритм.

    Господа, подскажите наиболее оптимальный (быстрый) алгоритм для поиска данных в массиве.
    Пример задачи: имеется массив, каждый элемент которого - BYTE. Требуется найти в этом массиве DWORD, WORD, STRING.
    Вот мои варианты:
    Если требуется найти STRING, то, видимо, лучший вариант воспользоваться OSCAT-овской функцией BUFFER_SEARCH.
    В случае WORD, DWORD: создаём соответствующий указатель, позиционируем его на стартовый элемент массива, сравниваем с требуемым словом, позиционируем указатель на следующий байт массива, опять сравниваем и т.д.
    Напильник, велосипед, бубен, грабли и костыли - основные инструменты программиста.

  2. #2
    Пользователь
    Регистрация
    11.01.2009
    Адрес
    Кострома
    Сообщений
    3,144

    По умолчанию

    Поиск по дате(пример)
    имеется структура содержащая помимо переменных еще и дату
    Структура записывается в массив из 0-31 (хватает на месяц)

    IF Q THEN (*Поиск разрешен*)

    cN:=0; (*сбрасываю счетчик*)

    FOR cN:=0 TO 30 DO (*В массиве у нас 31 переменая*)
    IF in_arx_God=ARX[cN].God AND
    in_arx_Mes=ARX[cN].Mesiac AND
    in_arx_Den=ARX[cN].Den THEN (*проверяем совпадение *)

    Out_arx_D1:=ARX[cN].Dnevnaia1; (если совпадение найдено, то выводим переменные)
    Out_arx_D2:=ARX[cN].Dnevnaia2;
    Out_arx_D3:=ARX[cN].Dnevnaia3;
    Out_arx_D4:=ARX[cN].Dnevnaia4;
    Out_arx_D5:=ARX[cN].Dnevnaia5;

    Out_arx_N1:=ARX[cN].Nochnaia1;
    Out_arx_N2:=ARX[cN].Nochnaia2;
    Out_arx_N3:=ARX[cN].Nochnaia3;
    Out_arx_N4:=ARX[cN].Nochnaia4;
    Out_arx_N5:=ARX[cN].Nochnaia5;

    cn:=cN+1;

    EXIT; (*Прекращаем поиск*)

    END_IF
    END_FOR
    END_IF

  3. #3
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    ПОИСК: Если массив отсортирован, то двоичный поиск, например. Если не отсортирован и искать надо нечасто, то тупо перебирать. Если не отсортирован и искать надо часто, то предварительно отсортировать. GOTO ПОИСК.

Похожие темы

  1. Поиск аналога
    от muigor в разделе Подбор Оборудования
    Ответов: 1
    Последнее сообщение: 29.03.2011, 14:10
  2. поиск на форуме
    от a_l_e_x в разделе Трёп (Курилка)
    Ответов: 1
    Последнее сообщение: 22.06.2010, 10:53
  3. Поиск оборудования (контроллера)
    от Streloknew в разделе Подбор Оборудования
    Ответов: 5
    Последнее сообщение: 22.04.2009, 15:06
  4. Ответов: 3
    Последнее сообщение: 28.08.2008, 19:34
  5. поиск по форуму
    от незарегистрированный в разделе Трёп (Курилка)
    Ответов: 4
    Последнее сообщение: 25.06.2008, 15:44

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •