PureBasic

SortStructuredArray()

Синтаксис

SortStructuredArray(ArrayName() , Options , OffsetOf(StructureField) , TypeOf(StructureField) [, Start , End])

Описание


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

Параметры

ArrayName() Имя Массива, который требуется отсортировать.
Options Этот параметр может быть комбинацией следующих значение (с помощью оператора '|'):
  #PB_Sort_Ascending : Сортировка Массива в порядке возрастания (в начале меньшие значения)
  #PB_Sort_Descending: Сортировка Массива в порядке убывания (в начале большие значения)
  #PB_Sort_NoCase    : Сортировка строкового Массива без учёта регистра (a=A, b=B и т.д.
OffsetOf (Structure\Field) Смещение поля в структуре. Для получения смещения поля в структуре, используемой в качестве типа для Массива, можно использовать команду OffsetOf().
TypeOf (Structure\Field) Тип поля структуры. Он должен соответствовать типу поля реальной структуры. Для автоматического получения типа поля можно использовать команду TypeOf(). Доступные типы:
  #PB_Byte     : Поле структуры имеет тип byte (.b)
  #PB_Word     : Поле структуры имеет тип word (.w)
  #PB_Long     : Поле структуры имеет тип long (.l)
  #PB_String   : Поле структуры имеет тип string (.s или $, Fixed String не поддерживаются)
  #PB_Float    : Поле структуры имеет тип float (.f)
  #PB_Double   : Поле структуры имеет тип double (.d)
  #PB_Quad     : Поле структуры имеет тип quad (.q)
  #PB_Character: Поле структуры имеет тип character (.c)
  #PB_Integer  : Поле структуры имеет тип integer (.i)
  #PB_Ascii    : Поле структуры имеет тип ascii character (.a)
  #PB_Unicode  : Поле структуры имеет тип unicode character (.u)
Start, End (дополн.) Индекс первого и последнего элементов Массива, определяющие область Массива для сортировки. Если эти параметры не указаны, то будет отсортирован весь Массив.

Комментарии

Тип Fixed String подпрограммой сортировки не поддерживается.
Если массив заполнен не полностью, то нулевые элементы будут помещены в начало при сортировке в порядке возрастания, и в конец при сортировке в порядке убывания.
Числа NaN не принимаются при сортировке, поскольку это приводит к случайным результатам.

Пример

Structure Animal
    Name$
    Speed.l
EndStructure

Dim Animals.Animal(2)

Animals(0)\Name$ = "Tiger"
Animals(0)\Speed = 10

Animals(1)\Name$ = "Jaguar"
Animals(1)\Speed = 40

Animals(2)\Name$ = "Zebra"
Animals(2)\Speed = 30

SortStructuredArray(Animals(), 0, OffsetOf(Animal\Name$), TypeOf(Animal\Name$))

For k=0 To 2
    Debug Animals(k)\Name$+" - Speed: "+Str(Animals(k)\Speed)
Next

SortStructuredArray(Animals(), 0, OffsetOf(Animal\Speed), TypeOf(Animal\Speed))

For k=0 To 2
    Debug Animals(k)\Name$+" - Speed: "+Str(Animals(k)\Speed)
Next

См. также

SortArray(), RandomizeArray()

Поддерживаемые OS

Все

<- SortList() - Оглавление Sort - SortStructuredList()->