Scratch シェーカーソート課題3

Scratch だい

だいないよう

もちいてしょうじゅんなら

かいとう

かいとうひょうする

はいけい

へんこうへんこうへんこう
定義 変数初期化

↓↓↓↓↓

定義 変数初期化
[状態 v]を[未整列]にする
[終端上 v]を(1)にする
[終端下 v]を([リスト v]の長さ::list)にする
[天秤左場所 v]を(0)にする
[天秤右場所 v]を(0)にする
定義 シェーカーソート

↓↓↓↓↓

定義 シェーカーソート
<(終端上)=(終端下)>まで繰り返す
バブルソート(終端下)(-1)::custom
[終端上 v]を(最終交換場所)にする
バブルソート(終端上)(1)::custom
[終端下 v]を(最終交換場所)にする
end
定義 バブルソート(開始場所)(向き)

↓↓↓↓↓

定義 バブルソート(開始場所)(向き)
[選択場所 v]を(開始場所)にする
((終端下)-(終端上))回繰り返す
[天秤左場所 v]を((選択場所)+(向き))にする
[天秤左値 v]を([リスト v]の(天秤左場所)番目)にする
[天秤右場所 v]を(選択場所)にする
[天秤右値 v]を([リスト v]の(天秤右場所)番目)にする
もし<((天秤左値)*(向き))<((天秤右値)*(向き))>なら
[リスト v]の(天秤左場所)番目を(天秤右値)で置き換える
[リスト v]の(天秤右場所)番目を(天秤左値)で置き換える
[最終交換場所 v]を(選択場所)にする
end
[選択場所 v]を(向き)ずつ変える
end

かいせつ

かいせつひょうする

はいけい

へんこうへんこうへんこう
定義 変数初期化

ていへんすうしょ」がされたとき、かいする

[状態 v]を[未整列]にする
[終端上 v]を(1)にする
[終端下 v]を([リスト v]の長さ::list)にする
[天秤左場所 v]を(0)にする
[天秤右場所 v]を(0)にする

へんすうしょせってい

定義 シェーカーソート

てい」がされたとき、かいする

<(終端上)=(終端下)>まで繰り返す
end

しゅうたんうえしゅうたんしたおなじになるまでかえ

バブルソート(終端下)(-1)::custom
[終端上 v]を(最終交換場所)にする
バブルソート(終端上)(1)::custom
[終端下 v]を(最終交換場所)にする

きをしたうえうえからしたする

定義 バブルソート(開始場所)(向き)

てい」がされたとき、かいする

[選択場所 v]を(開始場所::custom)にする

へんすうせんたくしょ」をかくのうする

((終端下)-(終端上))回繰り返す
end

へんすうせんたくしょ」がへんすうしゅうたんうえ」またはへんすうしゅうたんした」までかえ

[天秤左場所 v]を((選択場所)-(向き::custom))にする
[天秤左値 v]を([リスト v]の(天秤左場所)番目)にする
[天秤右場所 v]を(選択場所)にする
[天秤右値 v]を([リスト v]の(天秤右場所)番目)にする

てんびんはかしょあたいへんすうてんびんひだりしょ」・「てんびんひだりあたい」・「てんびんみぎしょ」・「てんびんみぎあたい」にかくのうする

もし<((天秤左値)*(向き::custom))<((天秤右値)*(向き::custom))>なら
[リスト v]の(天秤左場所)番目を(天秤右値)で置き換える
[リスト v]の(天秤右場所)番目を(天秤左値)で置き換える
[最終交換場所 v]を(選択場所)にする
end

きによってをじょうけんえ、の「てんびんひだりしょばんと「てんびんみぎしょばんあたいえ、さいしゅうこうかんしょかくのうする

[選択場所 v]を(向き::custom)ずつ変える

へんすうせんたくしょ」をつぎにする

sb3