Сортирует элементы массива в возрастающем или убывающем порядке.
Синтаксис:
ASORT(ArrayName [, nStartElement [, nNumberSorted [, nSortOrder]]])
Параметры:
ArrayName
Задает имя сортируемого массива.
nStartElement
Задает элемент, с которого начинается сортировка. Если аргумент nStartElement опущен, массив по умолчанию сортируется, начиная с самого первого элемента. Если массив одномерный, сортировка включает сам элемент nStartElement. Если массив двумерный, начальный элемент nStartElement определяет и строку, с которой начинается сортировка, и столбец, определяющий порядок сортировки строк.
Замечание Элемент двумерного массива можно указывать двумя способами: либо с помощью двух индексов, задающих позиции элемента в массиве по строкам и по столбцам, либо с помощью одиночного номера. Данная функция, как и ряд других функций, манипулирующих двумерными массивами, требуют задания одиночных номеров (в данном случае ѕ числовые выражения nStartElement и nNumberSorted). Для получения номера элемента исходя из его строчного и столбцевого индексов используйте функцию AELEMENT( ).
В следующем примере начальный элемент nStartElement определяет, как сортируются строки в двумерном массиве. Создается небольшой массив gaArray, который сортируется дважды. Первая сортировка начинается с первого элемента массива gaArray, при этом строки сортируются по значениям, содержащимся в первом столбце массива. Вторая сортировка начинается с четвертого элемента массива gaArray, и при этом строки сортируются по значениям, содержащимся во втором столбце.
Первая сортировка начинается с первой строки. Вторая сортировка начинается со второй строки. С помощью команды DISPLAY MEMORY можно отобразить содержимое массива; в данных примерах таблицы используются для графического изображения результатов сортировки.
Далее следуют команды, создающие массив gaArray:
DIMENSION gaArray(3,2) gaArray(1) = 'G' gaArray(2) = 'A' gaArray(3) = 'C' gaArray(4) = 'Z' gaArray(5) = 'B' gaArray(6) = 'N'
Массив gaArray выглядит следующим образом:
Столбец 1 Столбец 2 Строка 1 G A Строка 2 C Z Строка 3 B N
Затем массив сортируется функцией ASORT( ), начиная с первого элемента (1,1). Элементы первого столбца располагаются в возрастающем порядке переупорядочением строк массива.
=ASORT(gaArray,1)
Новый порядок строк будет следующим:
Столбец 1 Столбец 2 Строка 1 B N Строка 2 C Z Строка 3 G A
Затем массив сортируется, начиная с четвертого элемента (2,2). Элементы второго столбца располагаются по порядку перестановкой строк массива.
=ASORT(gaArray,4)
Обратите внимание на разницу в порядке строк:
Столбец 1 Столбец 2 Строка 1 B N Строка 2 G A Строка 3 C Z
nNumberSorted
Задает число элементов, сортируемых в одномерном массиве, или число строк, сортируемых в двумерном массиве. Например, если массив одномерный и значение nStartElement равно 2 (то есть сортировка начинается со второго элемента массива), а значение nNumberSorted равно 3 (то есть в сортировке должны участвовать три элемента), то будут отсортированы второй, третий и четвертый элементы массива. Если значение nNumberSorted равно -1 или не задано вообще, сортируются все элементы массива, начиная с элемента nStartElement и кончая последним элементом массива.
Если массив двумерный, nNumberSorted обозначает число строк, которые будут отсортированы, начиная со строки, содержащей элемент nStartElement. Например, если значение nStartElement равно 2, а значение nNumberSorted равно 3, в сортировке участвуют строка, содержащая второй элемент массива, и две следующие за ней строки. Если значение nNumberSorted равно -1 или вообще не задано, будут отсортированы все строки, начиная со строки, содержащей элемент nStartElement, и кончая последней строкой массива.
nSortOrder
Задает вид сортировки элементов массива (в возрастающем или в убывающем порядке). По умолчанию элементы массива сортируются в возрастающем порядке. Если значение nSortOrder равно 0 или опущено, элементы массива сортируются в возрастающем порядке. Если значение nSortOrder равно 1 или любому неотрицательному числу, элементы массива сортируются в убывающем порядке.
Результат:
Числовой
Комментарии:
Все элементы, участвующие в сортировке, должны принадлежать одному типу данных. Одномерные массивы сортируются по элементам; двумерные массивы сортируются по строкам. Когда сортируется двумерный массив, порядок строк в массиве изменяется таким образом, что элементы в столбце массива располагаются в возрастающем или в убывающем порядке.
Если сортировка завершается успешно, возвращается значение 1; в противном случае возвращается -1.
Пример:
* В следующем примере поле contact копируется из таблицы customer в * массив gaContact. На экран выводятся первые 20 элементов массива. * Затем массив сортируется, и на экране отображается результат * сортировки. CLOSE DATABASES OPEN DATABASE (HOME( ) + 'samples\data\testdata') USE Customer && Open customer table COUNT TO gnCount && Number of contacts DIMENSION gaContact(gnCount,1) && Create a contact array COPY TO ARRAY gaContact FIELD contact && Fill the array CLEAR ? 'Contact names:' ? FOR nCount = 1 TO 20 ? gaContact(nCount) && Display first 20 contacts ENDFOR = ASORT(gaContact)) && Sort the array ? ? 'Sorted Contact names:' ? FOR nCount = 1 TO 20 ? gaContact(nCount) && Display first 20 contacts, sorted ENDFOR