QSORT

可搬用サブルーチン:次元数 1 の配列でクイック・ソートを実行します。

モジュールUSE DFPORT

形式

CALL QSORT (array, len, isize, compar)

array
(入力) すべての型。ソートする 1 次元配列。
データ型が QSORT の既定のインタフェースの 1 つと確認できない場合,新しいインタフェースを作成しなければなりません (以下を参照)。

len
(入力) INTEGER(4)array の要素数。

isize
(入力) INTEGER(4)array の 1 要素の大きさ (バイト)。

compar
(入力) INTEGER(2)。ソート順を決定するユーザー定義ソート順関数の名前。compar の型宣言は,以下の形式を取ります。

INTEGER(2) FUNCTION compar(arg1, arg2)

ここで,arg1arg2array と同じ型を持ちます。一度,ソート順案を作成すると,以下を返すようにソート関数を実装します。

仮引数 comparEXTERNAL として宣言しなければなりません。

QSORT を異なるデータ型で使用する場合,すべての呼び出しが正しく動作するために,プログラムは USE DFPORT 文を宣言しなければなりません。さらに,構造型または既定のインタフェースにない型で QSORT を使用する場合,総称サブルーチン QSORT のオーバーロードを含めなければなりません。これを行う方法を示した例は,可搬用モジュールのソース・ファイル DFPORT.F90 (\DF98\INCLUDE サブディレクトリ) を参照してください。

互換性

CONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS WINDOWS DLL LIB

	PROGRAM SORTQ
	USE DFPORT
	integer(2), external :: cmp_function
	integer(2) insort(26), i
	integer (4) array_len, array_size
	array_len = 26
	array_size = 2
	do i=90,65,-1
	  insort(i-64)=91 - i
	end do
	print *, "Before: "
	print *,insort
	CALL qsort(insort,array_len,array_size,cmp_function)
	print *, 'After: '
	print *, insort
	END
	!
	integer(2) function cmp_function(a1, a2)
	  integer(2) a1, a2
	  cmp_function=a1-a2
	end function