Scratch シェアソート課題3

Scratch だい

だいないよう

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

かいとう

かいとうひょうする

はいけい

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

↓↓↓↓↓

定義 変数初期化
[状態 v]を[未整列]にする
[天秤左場所 v]を(0)にする
[天秤右場所 v]を(0)にする
[選択行 v]を(0)にする
[選択列 v]を(0)にする
[行数 v]を((([リスト v]の長さ::list)の[平方根 v]::operators)の[切り下げ v]::operators)にする
[列数 v]を((([リスト v]の長さ::list)/(行数))の[切り下げ v]::operators)にする
[余り v]を(([リスト v]の長さ::list)-((行数)*(列数)))にする
もし<<<(余り)>(0)>かつ<((行数)を(2)で割った余り)=(1)>>かつ<(行数)>(1)>>なら
[行数 v]を(-1)ずつ変える
[列数 v]を((([リスト v]の長さ::list)/(行数))の[切り下げ v]::operators)にする
[余り v]を(([リスト v]の長さ::list)-((行数)*(列数)))にする
end
定義 シェアソート

↓↓↓↓↓

定義 シェアソート
[ソート回数 v]を(((((行数)の[log v]::operators)/((2)の[log v]::operators))の[切り上げ v]::operators)+(1))にする
(ソート回数)回繰り返す
[選択行 v]を(1)にする
(行数)回繰り返す
バブルソート((((選択行)-(1))*(列数))+(1))((選択行)*(列数))((選択行)を(2)で割った余り)(1)::custom
[選択行 v]を(1)ずつ変える
end
もし<(余り)>(0)>なら
バブルソート((((選択行)-(1))*(列数))+(1))([リスト v]の長さ::list)((選択行)を(2)で割った余り)(1)::custom
end
[選択列 v]を(1)にする
(余り)回繰り返す
バブルソート(選択列)(((行数)*(列数))+(選択列))(1)(列数)::custom
[選択列 v]を(1)ずつ変える
end
((列数)-(余り))回繰り返す
バブルソート(選択列)((((行数)-(1))*(列数))+(選択列))(1)(列数)::custom
[選択列 v]を(1)ずつ変える
end
end
[選択行 v]を(1)にする
(行数)回繰り返す
バブルソート((((選択行)-(1))*(列数))+(1))((選択行)*(列数))(1)(1)::custom
[選択行 v]を(1)ずつ変える
end
もし<(余り)>(0)>なら
バブルソート((((選択行)-(1))*(列数))+(1))([リスト v]の長さ::list)(1)(1)::custom
end
定義 バブルソート(開始場所)(終了場所)(順序)(間隔)

↓↓↓↓↓

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

かいせつ

かいせつひょうする

はいけい

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

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

[状態 v]を[未整列]にする
[天秤左場所 v]を(0)にする
[天秤右場所 v]を(0)にする
[選択行 v]を(0)にする
[選択列 v]を(0)にする
[行数 v]を((([リスト v]の長さ::list)の[平方根 v]::operators)の[切り下げ v]::operators)にする
[列数 v]を((([リスト v]の長さ::list)/(行数))の[切り下げ v]::operators)にする
[余り v]を(([リスト v]の長さ::list)-((行数)*(列数)))にする
もし<<<(余り)>(0)>かつ<((行数)を(2)で割った余り)=(1)>>かつ<(行数)>(1)>>なら
[行数 v]を(-1)ずつ変える
[列数 v]を((([リスト v]の長さ::list)/(行数))の[切り下げ v]::operators)にする
[余り v]を(([リスト v]の長さ::list)-((行数)*(列数)))にする
end

へんすうしょせってい

定義 シェアソート

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

[ソート回数 v]を(((((行数)の[log v]::operators)/((2)の[log v]::operators))の[切り上げ v]::operators)+(1))にする
end

(ソート回数)回繰り返す

かいすうかえ

[選択行 v]を(1)にする
(行数)回繰り返す
バブルソート((((選択行)-(1))*(列数))+(1))((選択行)*(列数))((選択行)を(2)で割った余り)(1)::custom
[選択行 v]を(1)ずつ変える
もし<(余り)>(0)>なら
バブルソート((((選択行)-(1))*(列数))+(1))([リスト v]の長さ::list)((選択行)を(2)で割った余り)(1)::custom
end

1行ずつ交互に昇順・降順バブルソートする

[選択列 v]を(1)にする
(余り)回繰り返す
バブルソート(選択列)(((行数)*(列数))+(選択列))(1)(列数)::custom
[選択列 v]を(1)ずつ変える
end
((列数)-(余り))回繰り返す
バブルソート(選択列)((((行数)-(1))*(列数))+(選択列))(1)(列数)::custom
[選択列 v]を(1)ずつ変える
end

1列ずつ交互に昇順バブルソートする

[選択行 v]を(1)にする
(行数)回繰り返す
バブルソート((((選択行)-(1))*(列数))+(1))((選択行)*(列数))(1)(1)::custom
[選択行 v]を(1)ずつ変える
end
もし<(余り)>(0)>なら
バブルソート((((選択行)-(1))*(列数))+(1))([リスト v]の長さ::list)(1)(1)::custom
end

1行ずつ昇順バブルソートする

定義 バブルソート(開始場所)(終了場所)(順序)(間隔)

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

[選択場所 v]を(終了場所)にする

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

(((終了場所)-(終端))/(間隔))回繰り返す
end

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

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

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

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

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

[選択場所 v]を((間隔)*(-1))ずつ変える

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

[終端 v]を(間隔)ずつ変える

へんすうしゅうたん」をつぎにする

sb3