1 / 1 / 0
Регистрация: 25.11.2009
Сообщений: 35
|
|||||||||||
1 | |||||||||||
Сортировка массива по убыванию05.05.2011, 15:01. Показов 30420. Ответов 8
Метки нет (Все метки)
Люди, есть в delphi функция сортировки массива по убыванию? Простой одномерный числовой массив, надо чтоб у первого индекса было максимальное значение, у второго индекса значение меньше первого и т.д. Или как это реализовать? Я так полагаю нужен цикл в цикле с условиями? Короче говоря вот есть массив:
А лучше в другой такой же массив отсортровать!
0
|
05.05.2011, 15:01 | |
Ответы с готовыми решениями:
8
Сортировка массива по убыванию Сортировка массива по убыванию Сортировка массива по убыванию Сортировка массива по убыванию |
05.05.2011, 15:13 | 2 | |||||
Сообщение было отмечено как решение
Решение
вот такая процедура сортирует массив хоть по убыванию хоть по возрастанию, в зависимости какой знак поставишь больше или меньше
входные параметры массив которой будем сортировать, и длину массива
3
|
1 / 1 / 0
Регистрация: 25.11.2009
Сообщений: 35
|
|
05.05.2011, 15:25 [ТС] | 3 |
Точняк! Спасибо.
1
|
3 / 3 / 0
Регистрация: 26.11.2015
Сообщений: 170
|
|
19.12.2015, 06:49 | 4 |
Если убрать 'for I := 1 to n - 1 do" то массив не отсортируется полностью, произойдет однократная перестановка. Кто объяснит, как второй массив позволяет отсортировать до конца?
Сам бы я добавил в функцию repeat/until, пока первым элементом не станет самый маленький элемент. Здесь логику работы кода вижу (почему ИМЕННО массив отсортировывается ДО КОНЦА). А там - нет, но это работает! Вот и хочу разобраться.
0
|
19.12.2015, 14:00 | 5 |
заходим в первый цикл, заходим во второй цикл, вторым циклом делаем некую перестановку если это необходимо по условию, затем второй цикл завершается, заходим снова в первый, считаем на 1 дальше, заходим снова во второй цикл - снова переставляем если условие выполнилось, и до тех пор переставляем элементы, пока мы не пройдем все комбинации и тем самым не переставим элементы пока условие выполняется.
для полнейшего понимания ка кработает алгоритм, можно посмотреть видеоанимацию, например найти можно на том же youtube, или же можно выполнить код сортировки пошагово при этом наблюдая что с чем меняется и на каком шаге Добавлено через 4 минуты это не функция, а цикл, циклы во всех языках программирования взаимозаменяются, если последует вопрос, а для чего тогда 3 цикла в дельфи сделали. тогда ответ будет просто, в зависимости от применения for удобно использовать если заранее известны границы счета, например пройтись по массиву. while удобно использовать когда не известно сколько считать, но при этом обуславливаемся неким условием при котором счет будет выполняться repeat-until - сравним с while'ом, но разница в блоке сравнения, в первом сравнение должно выполниться минимум 1 раз, чтобы цикл выполнился хотябы 1 раз, второй же, выполнится минимум 1 раз при любом условии, дальнейшая работа зависит от блока сравнения
1
|
3 / 3 / 0
Регистрация: 26.11.2015
Сообщений: 170
|
|
19.12.2015, 17:15 | 6 |
Спасибо, разобрался!
0
|
0 / 0 / 0
Регистрация: 23.03.2017
Сообщений: 3
|
|
16.09.2021, 00:58 | 7 |
Код
procedure TForm1.SortArray(a: MyArr; n: Integer); var i,j: Integer; x: Integer; begin for I := 1 to n - 1 do for j := 1 to n - 1 do if a[j] > a[j+1] then begin x := a[j+1]; a[j+1] := a[j]; a[j] := x; end; end;
0
|
Модератор
3627 / 2148 / 759
Регистрация: 15.11.2015
Сообщений: 8,623
|
|
16.09.2021, 01:06 | 8 |
Надо MyArr задавать с 1 элемента, тогда всё нормально сработает.
Не по теме: Теме 10 лет как бы.
0
|
16.09.2021, 09:47 | 9 |
Ой, позывы прошлого прям напали, вчера только вспоминали 2009 год, тут уже и 2011 вылился))
да, как это в исходном примере от ТС Но хоть кто-то поворчал, хоть и через 10 лет..
0
|
16.09.2021, 09:47 | |
16.09.2021, 09:47 | |
Помогаю со студенческими работами здесь
9
Сортировка массива обменом по убыванию Сортировка массива по возрастанию и убыванию Сортировка массива по убыванию среднего балла Сортировка массива по убыванию методом вставки Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |