Функции сортировки элементов массива
Многие операции статистической обработки данных выполняются быстрее и надежнее, если данные предварительно отсортированы. Кроме того, нередко представление данных в отсортированном виде более наглядно и ценно. Ряд функций служит для выполнения сортировки элементов массива. Они представлены ниже.
sort (А) — в случае одномерного массива А сортирует и возвращает элементы по возрастанию их значений; в случае двумерного массива происходит сортировка и возврат элементов каждого столбца. Допустимы вещественные, комплексные и строковые элементы. Если А принимает комплексные значения, то элементы сначала сортируются по абсолютному значению, а затем, если абсолютные значения равны, по аргументу. Если А включает NaN-элементы, sort помещает их в конец;
[В. INDEX] = sort(A) — наряду с отсортированным массивом возвращает массив индексов INDEX. Он имеет размер size(A), с помощью этого массива можно восстановить структуру исходного массива.
sort(A.dim) — для матриц сортирует элементы по столбцам (dim=l) или по рядам в зависимости от значения переменной dim.
Примеры:
» A=magic(5) | |||||||||||
А = | |||||||||||
17 |
24 |
1 |
8 |
15 | |||||||
23 |
5 |
7 |
14 |
16 | |||||||
4 |
б |
13 |
20 |
22 | |||||||
10 |
12 |
19 |
21 |
3 | |||||||
11 |
18 |
25 |
2 |
9 | |||||||
» [В. B= |
INDEX] |
sort(A) | |||||||||
4 |
5 |
1 |
2 |
3 | |||||||
10 |
6 |
7 |
8 |
9 | |||||||
11 |
12 |
13 |
14 |
15 | |||||||
17 |
18 |
19 |
20 |
16 | |||||||
23 |
24 |
25 |
21 |
22 | |||||||
index= | |||||||||||
3 |
2 |
1 |
5 |
4 | |||||||
4 |
3 |
2 |
1 |
5 | |||||||
5 |
4 |
3 |
2 |
1 | |||||||
1 |
5 |
4 |
3 |
2 | |||||||
2 |
1 |
5 |
4 |
3 |
sortrows(A) — выполняет сортировку рядов массива А по возрастанию и возвращает отсортированный массив, который может быть или матрицей, или вектором-столбцом;
sortrows(A.column) — возвращает матрицу, отсортированную по столбцам, точно указанным в векторе column. Например, sortrows(A,[2 3]) сортирует строки матрицы А сначала по второму столбцу, и затем, если его элементы равны, по третьему;
[В, index] = sort rows (А) — также возвращает вектор индексов index. Если А — вектор-столбец, то B=A(index). Если А — матрица размера
тхп,
то B=A(index.:).
Примеры:
» А=[2 35689: 5 7 1 2 3 5:1 3 2 1 5 1:5 0 8 8 4 3]
А =
2 |
3 5 |
6 |
8 |
9 |
|||
5 |
7 1 |
2 |
3 |
5 |
|||
1 |
3 2 |
1 |
5 |
1 |
|||
5 |
0 8 |
8 |
4 |
3 |
|||
» |
В= |
sortrows(A) |
|||||
в |
= |
||||||
1 |
3 2 |
1 |
5 |
1 |
|||
2 |
3 5 |
6 |
3 |
9 |
|||
5 |
0 8 |
8 |
4 |
3 |
|||
5 |
7 1 |
2 |
3 |
5 |
|||
b=
5 |
7 |
1 |
2 |
3 |
5 |
1 |
3 |
2 |
1 |
5 |
1 |
2 |
3 |
5 |
6 |
8 |
9 |
5 |
0 |
8 |
8 |
4 |
3 |
cplxpalr(A,tol) — отменяет заданный по умолчанию порог и задает новый tol;
cplxpair(A.[].dim) — сортирует матрицу А по строкам или по столбцам в зависимости от значения параметра dim;
cplxpair(A,tol ,dim) — сортирует матрицу А по строкам или по столбцам в зависимости от значения параметра dim, используя заданный порог tol.
Пример:
» А=[23+121.34-31.45:23-121.-12.21:-3.34+31.-21]
А =
23.0000 + 12.00001 34.0000 - 3.00001 45.0000
23.0000 - 12.00001 -12.0000 0 + 2.00001
-3.0000 34.0000 + 3.00001 0 - 2.00001
» cplxpair(A)
ans =
23.0000 - 12.00001 34.0000 - 3.00001 0 - 2.00001
23.0000 + 12.00001 34.0000 + 3.00001 0 + 2.00001
-3.0000 -12.0000 45.0000