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 (nlog (n)).

Примеры

Пример 1

Вещественные числа видов команды 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])

Пример 2

Задайте свои собственные критерии, чтобы отсортировать список. Например, отсортируйте записи по их абсолютным значениям:

sort([-2, 1, -3, 4], (x, y) -> abs(x) < abs(y))

Пример 3

При сортировке наборов команда 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):

Пример 4

Если список содержит списки как записи, и все внутренние списки запускаются с чисел, команда sort использует эти числа, чтобы отсортировать внешний список:

sort([[10 - i, i*x^i] $ i = 1..9])

Сравните отсортированный список с внутренним порядком его записей:

sort([[10 - i, i*x^i] $ i = 1..9], sysorder)

Параметры

list

Список произвольных объектов MuPAD

f

Процедура, задающая упорядоченное расположение

Возвращаемые значения

Список.

Перегруженный

list

Смотрите также

Функции MuPAD