2017-01-08 2 views
0

Iは、Javaベースのアレイソーティング技術に取り組んで最大または最小を見つけることについてSelection Sort選択における各パスを有するアレイにおける最小値と最大値の両方を検索ソート

の向上を横切って選択ソート交渉のdocumented approachをつまずいていそれぞれのオブジェクトが、それは、左端のソートされていない要素は、(ソートに入れると、ソートされていないサブリスト内の最小(または最大、順序を並べ替えに に応じて)要素を見つける を交換(スワップ)によって

アルゴリズム進行を渡しますサブリストの境界を1つ右の要素に移動します。

私は基本的に私たちがここでやっていることを条件

public static void mySort(int[] arr) { 
    for (int i = 0; i < arr.length; i++) { 
     for (int j = i + 1; j < arr.length - i; j++) { 
      //This will make sure smallest element will come first 
      if (arr[i] > arr[j]) { 
       swap(arr, i, j); 
      } 
      // This will make sure largest element will come last 
      if (arr[j] > arr[arr.length - 1 - i]) { 
       swap(arr, arr.length - 1 - i, j); 
      // This will ensure that if a smaller element existed at the ending position and got swapped , we are making sure that it doesn't get mixed 
       if (arr[i] > arr[j]) { 
        swap(arr, i, j); 
       } 
      } 
     } 
    } 
} 

の両方をチェックすることで、単一パスで最大の&最小のオブジェクトの両方を見つけることがその可能性は、我々は両端からソートされていることを疑問に思って。 これは、伝統的な選択ソートに比べていくつかの時間を節約し、あなたがアプローチにあなたのフィードバックを提供してくださいと同様のものが既にmy blog post

+0

[このペーパー](http://www.ijaiem.org/Volume2Issue5/IJAIEM-2013-05-31-098.pdf)を参照してください。 –

+0

通常は比較の回数であり、パス数は少なくなりますが、比較は同じです。また、選択ソートは典型的には*シンプル*の小さなセットで使用されますが、大きなコレクションの場合は時間の複雑さの少ないソートが使用されます。 –

+0

ありがとうございます@BoristheSpider ..あなたが指摘した紙はほぼ同じように話していると思います。 – AdityaReddy

答えて

2

@

詳細を存在する場合、それは通常、重要と比較の数であることができますパス数は少なくなりますが、比較は同じです。また、選択ソートは通常、小さなセットではシンプルです。コレクションが大きい場合は、時間の複雑さの少ないソートが使用されます。

O(N log N)ソートを使用できるときに最適化されたO(N^2)ソートを使用するのはいつですか? Nが小さいときにのみ、あなたはそれをカバーする簡単なものがほしいと思う。例えばと最大2つの要素を比較したい場合は、選択ソートを使用します。

+1

これです。複雑さを軽減する唯一の方法は、アイテムの数の関数として作業を減らすことです(_)。 –

+0

ありがとう@peterLawrey ... yupp ..比較はまだ同じですが、複雑さはまだO(n2)の範囲にあります.. – AdityaReddy

関連する問題