a)原則:毎回、ソートするレコードから最小の要素を選択し、すべてのレコードがソートされるまでソートされたシーケンスの最後に順序に配置します。つまり、各旅行は、n-i+1(i = 1、2、... n-1)レコードの間の順序付けられたシーケンスのi番目のレコードとして選択されます。このアイデアに基づくアルゴリズムには、主にシンプルな選択の並べ替え、ツリーの選択ソーティング、ヒープソートが含まれます。 (これは一般的な単純な選択のみです)
b)ソートの単純な選択の基本的なアイデア:配列が与えられます:int [] arr = {nデータのデータ};初めてソートすると、データ内の最小のデータを選択してソートされます[1] 〜ARR [n]、ARR [1]と交換します。 2回目は、データ内の最小のデータを選択してソートされる[2]〜arr [n]を選択し、r [2]と交換します。など、データ内の最小のデータを選択してソートされたarr [i]〜arr [n]を選択し、すべての並べ替えが完了するまでr [i]と交換します。
c)例:array int [] arr = {5,2,8,4,9,1};
--------------------------------------------------------------------------
一次:元のデータ:528491
最小データ1、最初に1、つまり1と5のインターチェンジ位置を置きます、
結果のソート:128495
--------------------------------------------------------------------------
二次注文:
1 {28495}の外側のデータが比較され、2は最小、
結果のソート:128495
--------------------------------------------------------------------------
3番目の注文:
1および2以外のデータが{8495}を比較され、4は最小で、8と4は交換されます
ソート結果:124895
--------------------------------------------------------------------------
4番目の注文:
1、2、4以外の他のデータは{895}、5は最小、8、5が交換されます
ソート結果:124598
--------------------------------------------------------------------------
5番目の注文:
1、2、4、5以外の他のデータが比較され、8は最小、8、および9が交換されます
ソート結果:124589
--------------------------------------------------------------------------
注:各順序で最小数を取得する方法:ループを比較するために、3番目の変数温度を定義します。まず、最初の2つの数値を比較し、少数の数値を温度に入れてから、TEMPを使用して残りのデータと比較します。 Tempよりも小さいデータが表示されている場合は、Tempの元のデータの代わりに使用します。以下のコード例を参照する詳細については、ソートを学ぶ前に、for loopステートメントを学んだと思います。このようにして、ここでは特に簡単に理解できます。
コード例:
// [[パブリック] selectionsortの並べ替え{public static void main(string [] args){int [] arr = {1,3,2,45,65,33,12}; System.out.println( "Exchange:"); for(int num:arr){system.out.print(num+""); } //(int i = 0; i <arr.length -1; i ++)のソートの最適化を選択します。 for(int j = k+1; j <arr.length; j ++){//最小レコードif(arr [j] <arr [k]){k = j; //これまでに見つかった最小値の位置に注意してください}} //内側ループの終了後、つまり、このループの最小数を見つけた後、(i!= k){// [i]とa [k] int temp = arr [i]を交換します。 arr [i] = arr [k]; arr [k] = temp; }} system.out.println(); system.out.println( "swapの後:"); for(int num:arr){system.out.print(num+""); }}}実行結果のスクリーンショット:
ソートの時間の複雑さを選択します。単純な選択ソートの比較数は、シーケンスの初期ソートとは関係ありません。ソートされるシーケンスにn要素があると仮定すると、比較の数は常にn(n-1)/2になります。動きの数は、シーケンスの初期並べ替えに関連しています。シーケンスが正の場合、動きの数は最も少なく、これは0です。シーケンスが逆シーケンスされる場合、ほとんどの動きは3N(n-1)/2です。
したがって、要約すると、単純なソートの時間の複雑さはO(N2)です。