| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > VB .NET > Сортировка массива |
| Автор: timich 4.3.2009, 07:17 |
| Всем привет! Подскажите пожалуйста как отсортировать массив. Есть Array.Sort(Мас7) , а как отсортировать в обратной последовательности?? |
| Автор: -Mikle- 4.3.2009, 09:01 |
| У Array.Sort(...) есть еще пареметр, принимающий интерфейс System.Collections.IComparer и подобные ему... юзай, и будет тебе счастье! |
| Автор: diadiavova 4.3.2009, 11:17 |
| System.Collections.IComparer - очень полезная штука, когда нужна какая-нибудь специфическая сортировка. В данном же случае дотаточно будет использовать функцию Array.Reverse после сортировки. Она меняет порядок на противоположный. |
| Автор: timich 4.3.2009, 14:37 |
| С System.Collections.IComparer разобраться не смог, а реверс, то что нужно. Спасибо всем! |
| Автор: -Mikle- 4.3.2009, 15:32 |
| Если массив большой, то вызов Array.Reverse будет занимать дополнительное время. Я не смотрел код метода Array.Reverse, но предполагаю, что там цикл длинной в половину размера массива. А сортировка с указанием System.Collections.IComparer, столько же, сколько и сортировка без его указания (по умолчанию). timich, если еще нужно, я выложу код здесь... |
| Автор: timich 4.3.2009, 16:41 |
| Выкладывай конечно! Я же учусь)) Если можно с пояснениями. |
| Автор: -Mikle- 4.3.2009, 18:04 | ||
Ну вот:
Думаю, что все более чем понятно! Если исключить все коментарии, то получится ровно три строчки кода. По моему, проще некуда Тебе нужно скопировать отсюда только функцию CompareValues. |
| Автор: timich 4.3.2009, 23:01 |
| Спасибо! Буду пробовать. |
| Автор: timich 5.3.2009, 00:33 |
| Мне показалось, что не так.......(-1) - если val1 < val2 а вот так.....................................(-1) - если val1 > val2 ошибаюсь? |
| Автор: diadiavova 5.3.2009, 00:49 | ||
| Вообще: эта функция должна возвращать отрицательное число, если первый аргумент имеет более высокий приоритет сортировки, 0 - если приоритеты равны, и положительное число - если второй аргумент имеет более высокий проритет(кажись так). Более высокий приоритет означает, что в отсортированной коллекции элемент стоит раньше элементов с более низким приоритетом. Для чисел такая функция может быть реализована так
А вообще, почитай http://msdn.microsoft.com/ru-ru/library/system.collections.icomparer.compare.aspx. |
| Автор: timich 5.3.2009, 03:52 |
| Большое спасибо! |