これはどのソートアルゴリズムですか?私は昨夜この方法を考え、いくつかのコードをすばやく作成し、驚いたことに完璧に働きました。私はソートアルゴリズムに関するWikipediaの記事を見てきましたが、Stack Overflowを検索しましたが、これまたは類似のアルゴリズムを見つけることができませんでした。整数ソートアルゴリズムの識別に役立つ必要があります
これは、アルゴリズムの書かれたプロセスである:
[3, 1, 0, 4]
^ ^Check outermost items, swap if necessary
----------------
[3, 1, 0, 4]
^ ^ Check first pair of second farthest apart items, swap if necessary
[0, 1, 3, 4]
----------------
[0, 1, 3, 4]
^ ^Check second pair of second farthest apart items, swap if necessary
----------------
[0, 1, 3, 4]
^^ Check first pair of third farthest apart items, swap if necessary
----------------
[0, 1, 3, 4]
^^ Check second pair of third farthest apart items, swap if necessary
----------------
[0, 1, 3, 4]
^^ Check third pair of third farthest apart items, swap if necessary
----------------
[0, 1, 3, 4]
Cannot compare closer items (adjacent), done.
これはJavaScriptでアルゴリズムです:
var unsorted = [4, 9, 10, 2, 9, 4, 0];
var sorted = ianSort(unsorted);
function ianSort(array) {
for(var j = array.length; j > 1; j--) {
for(var i = 0; i < array.length - j + 1; i++) {
if(array[i] > array[i + j - 1]) {
var temp = array[i];
array[i] = array[i + j - 1];
array[i + j - 1] = temp;
}
}
}
return array;
}
(私は私は万一にここIanSort関数を呼び出しました一番最初に考えてみてください^^^
@イアン - これはいつも有効ですか?つまり、正しく動作することを示す正しい証明がありますか?また書いたように、これはO(n^2)の並べ替えなので、残念ながら私はあなたがそれから豊かで有名になるとは思わないと思います。それでもうまくいけば、本当にクールです! :-) – templatetypedef
いいえ、それはO(n^2)ではなく、実際にはかなり効果的です。そして、はい、私は完全に自分のコードをテストしました。 – Ian
それは二次的に見える。演算の数は '1 + 2 + 3 + ... + array.length'で、これは' O(n^2) 'になります。たとえば、百万要素の配列でテストしましたか? – IVlad