Эх чуток опоздали. Совсем недавно сидел за испытаниями скоростей сортирования. Многомерный массив, где нужно упорядочить список файлов (~100 000) и паралельно со списками дат (создания, изменения, обращения), размеров, контрольных сумм, и первых строк файла. Пузырьковая сортировка давала больше 10 секунд, а выборочная дала около секунды.
А вообще такие штучки ,как выбор метода, очень важны. Например если сравниваешь 2 маленьких файла, то алгоритм нужен тот, который быстрее напишешь. А если 2 файла огромные, и нужно создать отчет чего нет в одном файле и чего нет в другом, то метод простого построчного сравния даст результат через... несколько минут, в то время, как более сложный - с исключением уже ненужного и уменьшением востребованного в массиве... результат получаешь в течении секунды.
Вот и выбирай - быстро написать алгоритм, или писать долго но быстро получить ответ. Как еще один пример - получить таблицу простых чисел 1 до 100 (результат будет получен "сразу" человек и не заметит), а вот от 1 до 10 миллионов - в зависимости от выбора алгоритма, скорость будет отличаться в десятки тысяч раз, которые решат - ждать "минуту", или "неделю"
Хотя лично я пользуюсь для малых массивов листбоксом (у него ,правда, ограничено количество строк, но... ) В свойствах контрола ставлю Sorted = True, заполняю его массивом "прошу отсортировать" и считываю с него упорядоченный массив:
Код (vb.net):
Dim i As Integer
Dim a(100) As String
'a(0)=... , a(1)=... , ... , a(100)=... .
List1.Sorted = True ' ! автосортировку можно установить ТОЛЬКО в свойствах контрола
List1.Visible = False ' если невидимый, то работает намного быстрее (можно установить в свойствах)
'(РАБОТА
List1.Clear ' чистим после предыдущего раза
For i = 0 To 100 ' обязательно с ноля, ведь с ноля начинается номерация строк
List1.AddItem (a(i))
Next i
List1.Refresh ' обновляем = даем отсортироваться
DoEvents
For i = 0 To 100
a(i) = List1.List(i)
Next i
'РАБОТА)
Последнее редактирование модератором: 14 сен 2015