sort
Сортировка списка
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.
sort(list
, <f
>)
sort(list)
возвращает отсортированную копию списка.
sort
сортирует список в порядке возрастания.
Если вы не задаете процедуру f
, команда sort
использует следующие правила для сортировки списков:
Команда сортирует список вещественных чисел (Type::Real
) численно.
Команда сортирует список символьных строк в алфавитном порядке.
Команда сортирует внешний список, содержащий внутренние списки с числовыми первыми записями этими числовыми первыми записями. Смотрите Пример 4.
Во всех других случаях команда сортирует список согласно внутреннему порядку: sort(list)
эквивалентен sort(list, sysorder)
. Все сеансы MuPAD® используют тот же внутренний порядок. Между различными версиями MuPAD может измениться внутренний порядок.
Когда вы сортируете строки, прописные буквы имеют настройку по строчным буквам. Например, Z
появляется перед abc
.
Можно задать процедуру f
, чтобы задать критерии сортировки. sort
вызывает процедуру f
для каждой пары записей списка. f
должен возвратить Булево выражение, которое команда bool
может выполнить к TRUE
или FALSE
. Если для пары записей процедура f(x, y)
возвращает TRUE
, отсортированный список отображает x
слева от y
. В противном случае x
появляется справа от y
. Записи отсортированного списка L := sort(list, f)
удовлетворяют bool
(f(L[i], L[j])) = TRUE
для i < j
.
Если две записи списка равны критериями сортировки f
, команда sort
может подкачать эти записи. Например, если вы сортируете полиномы по их степеням, команда sort
может возвратить полиномы с той же степенью в области порядка, отличающегося от их порядка во входе.
sort
может быть перегружен областями ядра. Например, используйте функциональный DOM_SET::sort
, чтобы отсортировать наборы. Смотрите Пример 3
Средним временем выполнения, чтобы отсортировать список, содержащий записи n, является O (n log (n)).
Вещественные числа видов команды sort
(вводят Type::Real
), численно:
sort([4, -1, 2/3, 0.5])
Виды команды sort
представляют в виде строки в алфавитном порядке:
sort(["chip", "alpha", "Zip"])
Если список содержит другие типы объектов, команда sort
сортирует список согласно внутреннему порядку. Команда также применяет внутренний порядок отсортировать списки со смешанными типами записей:
sort([4, -1, 2/3, 0.5, "alpha"])
sort([4, -1, 2/3, 0.5, I])
Задайте свои собственные критерии, чтобы отсортировать список. Например, отсортируйте записи по их абсолютным значениям:
sort([-2, 1, -3, 4], (x, y) -> abs(x) < abs(y))
При сортировке наборов команда sort
возвращает список в результате:
sort({3, 12, 5, 30, 6, 43})
Отсортированный набор эквивалентен соответствующему отсортированному списку:
bool(sort({3, 12, 5, 30, 6, 43}) = sort([3, 12, 5, 30, 6, 43]))
Чтобы отсортировать другие типы данных, реализуйте sort
- слот для них:
unprotect(DOM_INT): DOM_INT::sort := proc(n) local str, i; begin str := expr2text(n); text2expr(_concat(op(sort([str[i] $ i = 1..length(str)])))) end: sort(1703936)
delete DOM_INT::sort: protect(DOM_INT):
Если список содержит списки как записи, и все внутренние списки запускаются с чисел, команда sort
использует эти числа, чтобы отсортировать внешний список:
sort([[10 - i, i*x^i] $ i = 1..9])
Сравните отсортированный список с внутренним порядком его записей:
sort([[10 - i, i*x^i] $ i = 1..9], sysorder)
Список.
list