insertionSort

タグ: ,

引数に指定された配列を挿入ソートで並び替えます。

構文
insertionSort( Var array )
引数
array必須
ソートする数値を格納した配列。参照引数。
戻り値

プログラム

UWSC
//////////////////////////////////////////////////
// 【引数】
//   array : ソートする数値を格納した配列。参照引数。 
// 【戻値】
//   
//////////////////////////////////////////////////
PROCEDURE insertionSort(Var array[])
	FOR i = 1 TO UBound(array)
		j = i
		WHILE j > 0 
			IF array[j-1] > array[j] THEN swap(array[j-1], array[j])
			j = j - 1
		WEND
	NEXT
FEND

//////////////////////////////////////////////////
// 【引数】
//   a : 変数bと交換する値。参照引数。 
//   b : 変数aと交換する値。参照引数。 
// 【戻値】
//   
//////////////////////////////////////////////////
PROCEDURE swap(Var a, Var b)
	DIM tmp = a
	a = b
	b = tmp
FEND

//////////////////////////////////////////////////
// 【引数】
//   array : 上限値を求める配列 
// 【戻値】
//   配列の上限値 
//////////////////////////////////////////////////
FUNCTION UBound(array[])
	RESULT = RESIZE(array)
FEND

挿入ソート

挿入ソートは、ソートアルゴリズムの一つ。整列してある配列に追加要素を適切な場所に挿入します。

アルゴリズム

まず0番目と1番目の要素を比較し、順番が逆であれば入れ換える。次に2番目の要素が1番目までの要素より小さい場合、正しい順に並ぶように「挿入」します。これで2番目までの要素が整列済みとなります。整列済みなだけで間に要素が挿入される可能性はあります。このあと3番目以降の要素についても比較・挿入を繰り返します。

関連記事

QSORT (スクリプト関数)
配列の中身をソートします。
gnomeSort (自作関数)
引数に指定された配列を ノームソート で並び替えます。
bubbleSort (自作関数)
引数に指定された配列を バブルソート で並び替えます。
shakerSort (自作関数)
引数に指定された配列を シェーカーソート で並び替えます。
combSort (自作関数)
引数に指定された配列を コムソート で並び替えます。
selectionSort (自作関数)
引数に指定された配列を 選択ソート で並び替えます。
heapSort (自作関数)
引数に指定された配列を ヒープソート で並び替えます。
oddEvenSort (自作関数)
引数に指定された配列を 奇偶転置ソート で並び替えます。
shearSort (自作関数)
引数に指定された配列を シェアソート で並び替えます。
shellSort (自作関数)
引数に指定された配列を シェルソート で並び替えます。
mergeSort (自作関数)
引数に指定された配列を マージソート で並び替えます。
quickSort (自作関数)
引数に指定された配列を クイックソート で並び替えます。
bogoSort (自作関数)
引数に指定された配列を ボゴソート で並び替えます。
Sort オブジェクト
データの並び替えを行います。
CALCARRAY (スクリプト関数)
配列データを計算します。
GETALLWIN (スクリプト関数)
全ウィンドウのIDを取得します。
JOIN (スクリプト関数)
配列の中身を区切り文字で結合し、文字列として返します。
SETCLEAR (スクリプト関数)
配列を指定された値で埋めます。
GETOLEITEM (スクリプト関数)
コレクションを取得します。
SHIFTARRAY (スクリプト関数)
配列データをシフトします。
UBound (自作関数)
配列の上限値(最大インデックス)を求めます。
連想配列
連想配列とは、自動的に割り当てられる数字をキーとして持つかわりに、自由に任意の文字列を割り振ることができる配列のことです。添え字に番号の変わりに名前をつけることでわかりやすく管理することができます。
POPUPMENU (スクリプト関数)
ポップアップメニューを表示します。
inArray (自作関数)
指定した値が配列に存在すればTrue、なければFalseを返します。
divisors (自作関数)
引数に指定した数値の約数のリストを返します。
Collatz (自作関数)
コラッツ数列 を求め結果を配列で返します。
Kaprekar (自作関数)
カプレカ数 を求め結果を配列で返します。
arraySearch (自作関数)
配列の中から指定した要素が見つかった場合、その要素がある最初のインデックスを返します。
arrayReverse (自作関数)
引数に指定した配列を逆順にして返します。
arrayDiff (自作関数)
配列の差を計算します。
RESIZE (スクリプト関数)
配列のサイズを変更します。
SLICE (スクリプト関数)
配列の中を指定範囲の配列で返します。
FOR-IN-NEXT
配列の要素分だけ処理を繰り返します。FOR文でも書き換えられます。
getFolderList (自作関数)
サブフォルダを含めたフォルダ一覧を配列で返します。
SPLIT (スクリプト関数)
文字列を区切り、配列を作成します。