Sun Studio 12: Fortran ライブラリ・リファレンス

1.4.39 qsort、qsort64: 1 次元配列の要素のソート

サブルーチンは、次のように呼び出します。

call qsort( array, len, isize, compar )

call qsort64( array, len8, isize8, compar )

array

array

入力 

ソートする要素が入っている配列 

len

INTEGER*4

入力 

配列内の要素の個数 

len8

INTEGER*8

入力 

配列内の要素の個数 

isize

INTEGER*4

入力 

要素のサイズ : 

4= 整数または実数 

8= 倍精度または複素数 

16= 倍精度複素数 

文字配列の場合は文字オブジェクトの長さ 

isize8

INTEGER*8

入力 

要素のサイズ : 

4_8= 整数または実数 

8_8= 倍精度または複素数 

16_8= 倍精度複素数 

文字配列の場合は文字オブジェクトの長さ 

compar

関数名 

入力 

ユーザーが提供する INTEGER*2 型の関数の名前。

ソート順を決定する: compar(arg1,arg2)

64 ビット環境においては、2 G バイトを超える配列には qsort64 を使用します。この場合、INTEGER*8 データとして、配列の長さは len8、要素サイズは isize8 に必ず指定してください。Fortran 95 型の定数を使用して INTEGER*8 定数を明示的に指定します。

compar の引数である arg1arg2 は、配列の要素であり、次の結果を返します。

負数 

arg1arg2 の前に置かれると見なされる場合

ゼロ 

arg1arg2 が等しい場合

正数 

arg1arg2 のあとに置かれると見なされる場合

例:


demo% cat tqsort.f
       external compar
       integer*2 compar
       INTEGER*4 array(10)/5,1,9,0,8,7,3,4,6,2/,len/10/,
     1           isize/4/
       call qsort( array, len, isize, compar )
       write(*,'(10i3)') array
       end
       integer*2 function compar( a, b )
       INTEGER*4 a, b
       if ( a .lt. b ) compar = -1
       if ( a .eq. b ) compar = 0
       if ( a .gt. b ) compar = 1
       return
       end
demo% f95 tqsort.f
demo% a.out
  0 1 2 3 4 5 6 7 8 9