『スクリプト 汎用関数』 配列をソートする
投稿者: aoihikawa 投稿日:2012/01/30 19: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) #あおい,あかね,あんず,ききょう,すずらん,すみれ,なずな,ひまわり,れんげ,われもこう
参考文献:クイックソート
コメントする
コメントするには、ログインする必要があります。
すごくあたまがこんがらがります。
あと、文字列ってどうやって比べているんですか?
深く考えなくても、アルファベット順、あいうえお順等で並びます
そのため、漢字交じりの文字列の場合は
意図した動作にならないかもしれません