配列関係の関数3つ+α

投稿者:Material 185033 3 mini 光楼(114) 投稿日:2016/05/15 14:24

まずは、昇順になるよう配列に要素を追加する関数
配列の長さが1以下、または配列が元から昇順でないと無意味です。
def AddArrayUp(array, v)
i = 0
l = getArrayLength(array)
while i < l
if v < array[i]
sort_i = l - 1
while sort_i >= i
array[sort_i + 1] = array[sort_i]
sort_i = sort_i - 1
end
array[i] = v
i = l
end
i = i + 1
end
if i == l
pushArray(array, v)
end
return array
end

詳しくはスクリプト/昇順・降順になるよう配列に要素を追加する関数をお読み下さい。

次は二分探索関数。
配列が昇順になっていることが前提です。
def BinarySearchUp(array, v)
low = 0
high = getArrayLength(array) - 1
while low <= high
i = floor((low + high) / 2)
if v == array[i]
return i
elsif v < array[i]
high = i - 1
else
low = i + 1
end
end
return -1
end

詳しくはスクリプト/二分探索関数をお読み下さい。

最後に配列を一箇所だけ削除する関数
def DeleteArray(array, a)
i = a
l = getArrayLength(array) - 1
while i < l
array[i] = array[i + 1]
i = i + 1
end
popArray(array)
return array
end

詳しくはスクリプト/配列を一箇所だけ削除する関数をお読み下さい。

使用例
a= createArray()
a[0] = "あお"
a[1] = "あか"
a[2] = "き"
a[3] = "くろ"
a[4] = "ちゃ"
a[5] = "むらさき"

#昇順になるよう配列に要素を追加する関数
a = AddArrayUp(a, "しろ")
a = AddArrayUp(a, "みどり")

speak("配列a\n", a) #あお,あか,き,くろ,しろ,ちゃ,みどり,むらさき

#二分探索関数
indx = BinarySearchUp(a, "き")
speak("検索\"き\" : ", indx) #2

#配列を一箇所だけ削除する関数
a = DeleteArray(a, indx)
speak("削除後配列a\n", a) #あお,あか,くろ,しろ,ちゃ,みどり,むらさき


おまけ
降順になるよう配列に要素を追加する関数
def AddArrayDown(array, v)
i = 0
l = getArrayLength(array)
while i < l
if v > array[i]
sort_i = l - 1
while sort_i >= i
array[sort_i + 1] = array[sort_i]
sort_i = sort_i - 1
end
array[i] = v
i = l
end
i = i + 1
end
if i == l
pushArray(array, v)
end
return array
end


二分探索関数 降順ver
def BinarySearchDown(array, v)
low = 0
high = getArrayLength(array) - 1
while low <= high
i = floor((low + high) / 2)
if v == array[i]
return i
elsif v > array[i]
high = i - 1
else
low = i + 1
end
end
return -1
end

コメントする

コメントするには、ログインする必要があります。

コメント一覧

コメントはありません。