Быстрый поиск в листбоксе

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

LeXoN
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 15
Зарегистрирован: 22.10.2006 (Вс) 13:12

Быстрый поиск в листбоксе

Сообщение LeXoN » 23.10.2006 (Пн) 19:47

Помогите с быстрым поиском в листбоксе что не делаю не могу как сделать подскажите !!!

Thomas
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 246
Зарегистрирован: 12.11.2005 (Сб) 0:17
Откуда: "Сказочное королевство"

Сообщение Thomas » 23.10.2006 (Пн) 22:11

LeXoN
Привет.
А какие данные у тебя в ListBox? Какого типа, текст или числа?
Как сам пытался реализовать поиск?

Идея должна быть примерно такая:
- отсортировать данные в ListBox;
- бинарный поиск искомого значения. (если я правильно понял твой вопрос)

Сортировать можно так, вот пример сортировки массива


Код: Выделить всё
Public Sub Quicksort(ByVal tabel() As Integer, ByVal Li As Integer, ByVal Re As Integer)
        Dim Hli, Hre, mid As Integer
        Hli = Li : Hre = Re
        mid = tabel((Hli + Hre) / 2)
        While Hli <= Hre
            While tabel(Hli) < mid
                Hli += 1
            End While
            While tabel(Hre) > mid
                Hre -= 1
            End While
            If Hli <= Hre Then
                verwissel(tabel, Hli, Hre)
                Hli += 1 : Hre -= 1
            End If
        End While
        If Li < Hre Then
            Quicksort(tabel, Li, Hre)
        End If
        If Hli < Re Then
            Quicksort(tabel, Hli, Re)
        End If
    End Sub

То есть выполним быструю сортировку.
Далее бинарный поиск. Сравниваем искомое с серединой, если больше то ищем в верхней части, если меньше то в нижней. И так далее, снова сравниваем с серединой оставшейся части, а там вверх или вниз пока не найдешь.
Идея понятна?

Да для сравнения данных типа String используй IComparer.Compare.

Удачи.

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 23.10.2006 (Пн) 22:11

ссылки на Итемы параллельно добавлять в нужный тип коллекции. и по нему осуществлять поиск.
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

LeXoN
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 15
Зарегистрирован: 22.10.2006 (Вс) 13:12

Сообщение LeXoN » 24.10.2006 (Вт) 7:53

Привет Thomas у меня данные буквеные
пытался что-то типа этого
Dim FIndex As Integer = MyListBox.FindString ("As")
или
Dim FIndex As Integer = MyListBox.FindStringExact ("As")

Thomas
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 246
Зарегистрирован: 12.11.2005 (Сб) 0:17
Откуда: "Сказочное королевство"

Сообщение Thomas » 24.10.2006 (Вт) 9:18

LeXoN
Привет.
Ну вот видишь, какой ты молодец. Нашел встроенные функции для ListBox. Первая, как я понимаю ищет все значения типа String, начинающиеся на "As". Вторая, ищет значения типа String, полностью совпадающие с "As".

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


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 78

    TopList