Scratch 奇偶転置ソート課題3
課題内容
スペースキーでリストを奇偶転置ソートを用いて昇順に並び替え
解答
解答を表示する
背景
変更①変更②変更③
定義 変数初期化
↓↓↓↓↓
定義 変数初期化 [状態 v]を[未整列]にする [天秤左場所 v]を(0)にする [天秤右場所 v]を(0)にする
定義 奇偶転置ソート
↓↓↓↓↓
定義 奇偶転置ソート ずっと [交換回数 v]を(0)にする バブルソート([リスト v]の長さ::list)[奇偶]::custom バブルソート(([リスト v]の長さ::list)-(1))[偶奇]::custom もし<(交換回数)=(0)>なら [このスクリプトを止める v] end end
定義 バブルソート(開始場所)(組)
↓↓↓↓↓
定義 バブルソート(開始場所)(組) [選択場所 v]を(開始場所)にする [組 v]を(組::custom)にする <(選択場所)<(2)>まで繰り返す [天秤左場所 v]を((選択場所)-(1))にする [天秤左値 v]を([リスト v]の(天秤左場所)番目)にする [天秤右場所 v]を(選択場所)にする [天秤右値 v]を([リスト v]の(天秤右場所)番目)にする もし<(天秤左値)>(天秤右値)>なら [リスト v]の(天秤左場所)番目を(天秤右値)で置き換える [リスト v]の(天秤右場所)番目を(天秤左値)で置き換える [交換回数 v]を(1)ずつ変える end [選択場所 v]を(-2)ずつ変える end
解説
解説を表示する
背景
変更①変更②変更③
定義 変数初期化
定義「変数初期化」が呼び出されたとき、スクリプトを開始する
[状態 v]を[未整列]にする [天秤左場所 v]を(0)にする [天秤右場所 v]を(0)にする
変数の初期設定
定義 奇偶転置ソート
定義「奇偶転置ソート」が呼び出されたとき、スクリプトを開始する
[交換回数 v]を(0)にする バブルソート([リスト v]の長さ::list)[奇偶]::custom バブルソート(([リスト v]の長さ::list)-(1))[偶奇]::custom
交換回数をリセットして、要素を奇偶・偶奇ペアでバブルソートする
ずっと もし<(交換回数)=(0)>なら [このスクリプトを止める v] end end
交換回数が0になるまで繰り返す
定義 バブルソート(開始場所)(組)
定義「バブルソート」が呼び出されたとき、スクリプトを開始する
[選択場所 v]を(開始場所::custom)にする [組 v]を(組::custom)にする
変数「選択場所」・「組」を格納する
<(選択場所)<(2)>まで繰り返す end
変数「選択場所」が上端まで繰り返す
[天秤左場所 v]を((選択場所)-(1))にする [天秤左値 v]を([リスト v]の(天秤左場所)番目)にする [天秤右場所 v]を(選択場所)にする [天秤右値 v]を([リスト v]の(天秤右場所)番目)にする
天秤で計る場所と値を変数「天秤左場所」・「天秤左値」・「天秤右場所」・「天秤右値」に格納する
もし<(天秤左値)>(天秤右値)>なら [リスト v]の(天秤左場所)番目を(天秤右値)で置き換える [リスト v]の(天秤右場所)番目を(天秤左値)で置き換える [交換回数 v]を(1)ずつ変える end
天秤が左の方が大きい場合、リストの「天秤左場所」番目と「天秤右場所」番目の値を入れ替え、交換回数をカウントアップする
[選択場所 v]を(-2)ずつ変える
変数「選択場所」を次の位置にする