スクリプト/汎用関数/配列をソートする(履歴ID:693)
最終投稿者:
aoihikawa
更新:2017/04/05 19:20:00
配列をソートする
(ご自由にご利用ください)
使用例
参考文献:クイックソート
ご意見やご質問などありましたら
こちらのブログ記事まで。
(ご自由にご利用ください)
#配列ソート
def pivot(arr,i,j,ord)
k = i + 1
while (k <= j) && (arr[i] == arr[k]) do k = k + 1; end
if k > j then return -1; end
if ord
if arr[i] >= arr[k] then return i; end
else
if arr[i] <= arr[k] then return i; end
end
return k
end
def partition(arr,i,j,x,ord)
l = i; r = j
while l <= r
if ord
while (l <= j) && (arr[l] < x) do l = l + 1; end
while (r >= i) && (arr[r] >= x) do r = r - 1; end
else
while (l <= j) && (arr[l] > x) do l = l + 1; end
while (r >= i) && (arr[r] <= x) do r = r - 1; end
end
if l <= r
t = arr[l]; arr[l] = arr[r]; arr[r] = t
l = l + 1; r = r - 1
end
end
return l
end
def quickSort(arr,i,j,ord)
if i != j
p = pivot(arr,i,j,ord)
if p != -1
k = partition(arr,i,j,arr[p],ord)
arr = quickSort(arr,i,(k - 1),ord)
arr = quickSort(arr,k,j,ord)
end
end
return arr
end
#使用時はこの関数のみ
#第1引数:配列 第2引数:昇順 true / 降順 false
def sortArray(arr,ord)
return quickSort(arr,0,(getArrayLength(arr) - 1),ord)
end
使用例
aList = createArray() aList[0] = 3 aList[1] = 1 aList[2] = 4 aList[3] = 6 aList[4] = 2 aList[5] = 8 aList[6] = 7 aList[7] = 5 aList[8] = 9 aList[9] = 3 #配列を降順に並べ替え aList = sortArray(aList, false) speak(aList) #9,8,7,6,5,4,3,3,2,1 bList = createArray() bList[0] = "すみれ" bList[1] = "ひまわり" bList[2] = "あかね" bList[3] = "なずな" bList[4] = "あおい" bList[5] = "われもこう" bList[6] = "ききょう" bList[7] = "れんげ" bList[8] = "すずらん" bList[9] = "あんず" #配列を昇順に並べ替え bList = sortArray(bList, true) speak(bList) #あおい,あかね,あんず,ききょう,すずらん,すみれ,なずな,ひまわり,れんげ,われもこう
参考文献:クイックソート
ご意見やご質問などありましたら
こちらのブログ記事まで。