シェルソートです! 挿入ソートを改良して離れたところを比較する事でより早く並び替えが出来るようになったやつです。 How to use↓ STARTボタンでソートをスタートします。データ数変更ボタンで並び替えるデータの数を変更します。処理速度の調整ボタンで一秒間に何回ソートの処理をするかを変更します。音の有無ボタンはその名の通り音の有無を変更します。 数列の種類で、データの大小を比較する位置の差を決める数列を変えます。デフォルトは1のドナルド・シェルの数列です。 数列の紹介(全部で六つあります。読まなくてもOKです) No1:ドナルド・シェルの数列 一番最初に考案された数列。A1=⌊n/2⌋,A(n+1)=⌊(An)/2⌋(nはデータの数、⌊x⌋はxの切り捨ての意味)で、作るのが簡単だけど、遅い事がある。最悪計算量はO(n^2)です。 No2:ドナルド・クヌースの数列 k≥1で、((3^k)-1)/2です。最悪計算量はO(n*√n)=O(n^1.5))です。ただ、平均計算量はO(n*∜n)=O(n^1.25)です。 No3:セッジウィックの数列 A1=1としてk≥2で、 Ak=4^k+3*2^(k-1)+1です。最悪計算量はO(n*∛n)=O(n^(4/3))です。 No4:Prattの数列 2^p*q^3(pとqは自然数)の値を小さい順に並び替えた時の数列です。最悪計算量はO(n*log^2(n))です。 No5:Marcin Ciuraの数列 1, 4, 9, 23, 57, 138, 326, 701と言う風に続きます。実用的なものの中ではかなり早い。 No6:徳田の数列 k≥1の時、Ak=⌈(9*2.25^k-4)/5⌉ (⌈x⌉はxの切り上げの意味)です。無限に拡張できる中ではかなり早いです。 以上六つです。わからなかったら適当に試してみてください。(気持ち速いのは徳田の数列かな)
強くなる前の挿入ソートと対決!↓ https://scratch.mit.edu/projects/1362324094 似たノームソートはここから↓ https://scratch.mit.edu/projects/1365639655/ シェルソートの名前の由来は、考案者のドナルド・シェルの苗字からです。貝殻のシェルじゃない。