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