Scratch 挿入ソート課題3
課題内容
スペースキーでリストを挿入ソートを用いて昇順に並び替え
解答
解答を表示する
背景
変更①変更②
定義 変数初期化
↓↓↓↓↓
定義 変数初期化 [状態 v]を[未整列]にする [挿入元場所 v]を(0)にする [選択場所 v]を(0)にする
定義 挿入ソート
↓↓↓↓↓
定義 挿入ソート [挿入元場所 v]を(2)にする (([リスト v]の長さ::list)-(1))回繰り返す [挿入元値 v]を([リスト v]の(挿入元場所)番目)にする [選択場所 v]を((挿入元場所)-(1))にする [選択値 v]を([リスト v]の(選択場所)番目)にする <<(選択場所)<(1)>または<(選択値)<(挿入元値)>>まで繰り返す [リスト v]の((選択場所)+(1))番目を(選択値)で置き換える [選択場所 v]を(-1)ずつ変える [選択値 v]を([リスト v]の(選択場所)番目)にする end [リスト v]の((選択場所)+(1))番目を(挿入元値)で置き換える [挿入元場所 v]を(1)ずつ変える end
解説
解説を表示する
背景
変更①変更②
定義 変数初期化
定義「変数初期化」が呼び出されたとき、スクリプトを開始する
[状態 v]を[未整列]にする [入替場所 v]を(1)にする [選択場所 v]を(0)にする [最小場所 v]を(0)にする
変数の初期設定
定義 挿入ソート
定義「挿入ソート」が呼び出されたとき、スクリプトを開始する
[挿入元場所 v]を(2)にする
変数「挿入元場所」に2番目の位置を格納する
((リスト v]の長さ::list)-(1))回繰り返す end
変数「挿入元場所」が最後まで繰り返す
[挿入元値 v]を([リスト v]の(挿入元場所)番目)にする [選択場所 v]を((挿入元場所)-(1))にする [選択値 v]を([リスト v]の(選択場所)番目)にする
変数「挿入元場所」の1つ手前の場所と値を変数「選択場所」・「選択値」に格納する
<<(選択場所)<(1)>または<(選択値)<(挿入元値)>>まで繰り返す [リスト v]の((選択場所)+(1))番目を(選択値)で置き換える [選択場所 v]を(-1)ずつ変える [選択値 v]を([リスト v]の(選択場所)番目)にする end
変数「選択値」が変数「挿入元値」より大きくなるまで上書きして繰り返す
[リスト v]の((選択場所)+(1))番目を(挿入元値)で置き換える
変数「挿入元値」を変数「選択値」が変数「挿入元値」より大きくなる手前に格納する
[挿入元場所 v]を(1)ずつ変える
変数「挿入元場所」を次の位置にする