asort( ) 函式

tact n tact n tact(n

asort( ) 函式
按升序或降序對數組中的元素排序。

語法

ASORT(ArrayName [, nStartElement [, nNumberSorted [, nSortOrder]]])

參數

ArrayName

指定要排序的數組名稱。

nStartElement

指定從第幾個元素開始排序。如果忽略參數 nStartElement,則默認從數組的第一個元素開始排序。如果數組是一維的,函式從 nStartElement
開始排序。如果數組是二維的,則參數 nStartElement 既決定從第幾行開始排序,又決定以每行中的第幾列元素為排序依據。

附註

引用二維數組中的一個元素有兩種方法。第一種為使用兩個下標值指定元素在數組中行和列位置,另一種方法為使用元素編號。此函式和其他處理二維數組的函式都需要使用元素編號(asort( ) 函式中為數值表達式 nStartElement
和 nNumberSorted)。使用 AELEMENT( ) 函式可以將數組的行、列下標值轉換成元素的編號值。

下面的示例說明了起始元素 nStartElement 決定二維數組中的行如何排序。創建一個小的數組 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,表明有三個元素參與排序,即對第二、第三和第四個元素排序。如果參數為 -1 或忽略此參數,則從起始元素 nStartelement 到數組中的最後一個元素都參與排序。
如果數組是二維的,nNumberSorted 指定從起始元素 nStartElement 所在行開始參與排序的行數。例如,如若參數 nStarElement 為 2 且參數 nNumberSorted 為 3,將對包含第二個數組元素的行和接下來的兩行排序。如果 nNumbersorted
為 -1 或忽略此參數,從包含起始元素的行到數組的最後一行都參與排序。

nSortOrder

指定數組元素的排序方向(升序或降序)。默認情況下,數組元素按升序排序;如果 nSortOrder 值為零或忽略此參數,數組中元素將按升序排序。如果 nSortOrder 值為 1 或任意非零值,數組元素按降序排序。

返回值類型

數值型

說明

所有參與排序的元素必須為同一數據類型。一維數組對元素排序,二維數組對行排序。對二維數組排序時,將改變數組行的順序,使數組中某一列的元素按升序或降序排列。
如果排序成功,返回值為 1,否則返回值為 -1。

asort( ) 函式示例

下面的示例將表 customer 的 contact 欄位內容複製到數組 gacontact 中。然後顯示數組中前 20 條 欄位的內容,對數組進行排序,重新按排序順序顯示 contact 欄位的內容。

close databases
open database (home( ) + 'samples\data\testdata')
use customer && 打開表 customer

count to gncount && contacts 欄位的數目
dimension gacontact(gncount,1) && 創建數組
copy to array gacontact field contact && 填充數組

clear
? 'contact names:'
?
for ncount = 1 to 20
? gacontact(ncount) && 顯示前 20 條 contact 內容
endfor
= asort(gacontact)) && 對數組排序

?
? 'sorted contact names:'
?
for ncount = 1 to 20
? gacontact(ncount) && 排序後,再顯示前 20 條 contact 內容

endfor

相關詞條

相關搜尋

熱門詞條

聯絡我們