Функции сортировки элементов массива
Многие операции статистической обработки данных выполняются быстрее и надежнее, если данные предварительно отсортированы. Кроме того, нередко представление данных в отсортированном виде более наглядно и ценно. Ряд функций служит для выполнения сортировки элементов массива. Они представлены ниже.
- sort (А) – в случае одномерного массива А сортирует и возвращает элементы по возрастанию их значений; в случае двумерного массива происходит сортировка и возврат элементов каждого столбца. Допустимы вещественные, комплексные и строковые элементы. Если А принимает комплексные значения, то элементы сначала сортируются по абсолютному значению, а затем, если абсолютные значения равны, по аргументу. Если А включает NaN-элементы, sort помещает их в конец;
- [В. INDEX] = sort(A) – наряду с отсортированным массивом возвращает массив индексов INDEX. Он имеет размер size(A), с помощью этого массива можно восстановить структуру исходного массива.
- sort(A.dim) – для матриц сортирует элементы по столбцам (dim=l) или по рядам в зависимости от значения переменной dim.
Примеры:
>
>
A
=
magic(
5
)
A
=
17
24
1
8
15
23
5
7
14
16
4
6
13
20
22
10
12
19
21
3
11
18
25
2
9
>
>
[B.INDEX] sort(A)
B
=
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). Если А – матрица размера тхn, то B=A(index.:).
Примеры:
>
>
A
=
[
2
35689
:
5
7
1
2
3
5
:
1
3
2
1
5
1
:
5
0
8
8
4
3
]
A
=
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)
B
=
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
=
sortrows(A.
3
)
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
- cplxpair(A) – сортирует элементы по строкам или столбцам комплексного массива А, группируя вместе комплексно сопряженные пары. Затем найденные пары сортируются по возрастанию действительной части. Внутри пары элемент с отрицательной мнимой частью является первым. Действительные элементы следуют за комплексными парами. Заданный по умолчанию порог 100*eps относительно abs(A(i))) определяет, какие числа являются действительными и какие элементы являются комплексно сопряженными. Если А – вектор, cpl xpair (А) возвращает А вместе с комплексно сопряженными парами. Если А – матрица, cpl xpai r(А) возвращает матрицу А с комплексно сопряженными парами, сортированную по столбцам;
- cplxpalr(A,tol) – отменяет заданный по умолчанию порог и задает новый tol;
- cplxpair(A.[].dim) – сортирует матрицу А по строкам или по столбцам в зависимости от значения параметра dim;
- cplxpair(A,tol,dim) – сортирует матрицу А по строкам или по столбцам в зависимости от значения параметра dim, используя заданный порог tol.
Пример:
>
>
A
=
[
23
+
121.34
-
31.45
:
23
-
121
.
-
12.21
:
-
3.34
+
31
.
-
21
]
A
=
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