配列関係の関数3つ+α
投稿者: 光楼(114) 投稿日:2016/05/15 14:24
まずは、昇順になるよう配列に要素を追加する関数
配列の長さが1以下、または配列が元から昇順でないと無意味です。
詳しくはスクリプト/昇順・降順になるよう配列に要素を追加する関数をお読み下さい。
次は二分探索関数。
配列が昇順になっていることが前提です。
詳しくはスクリプト/二分探索関数をお読み下さい。
最後に配列を一箇所だけ削除する関数
詳しくはスクリプト/配列を一箇所だけ削除する関数をお読み下さい。
使用例
おまけ
降順になるよう配列に要素を追加する関数
二分探索関数 降順ver
ツイート
配列の長さが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
コメントする
コメントするには、ログインする必要があります。
コメント一覧
コメントはありません。