ソートの概念を選択します
選択ソートは、バブルソートと特定の類似性を持つExchange Sortingアルゴリズムでもあります。したがって、私は個人的に、選別を選択することはバブルソートの改善されたアルゴリズムと見なすことができると信じています。そのアイデアは次のとおりです。
Array arr []がソートされ、n要素があると仮定します。
1最初の要素(Java、subscriptは0)と2番目の要素を比較します。前者が後者よりも大きい場合、それは最小ではないはずですが、バブルソーティングのような交換に急いではいけません。一時的な変数Aを設定して、現在最小の要素の添え字を保存できます。次に、最小要素と3番目の要素を比較し続けます。それでも最小でない場合は、aの値を変更します。このように、最後の要素との比較が完了するまで、Aが最小の要素の添え字である必要があることは確かです。
2。aの値が0でない場合(初期値、つまり最初の要素の添え字)、2つの要素を添え字aと0と交換します。
3.上記のプロセスを繰り返し、最小の要素がsubscript 0の位置に配置されているため、サブスクリプト1との要素との比較を開始します。
4.このように、最後の要素のみが残るまで、この要素が最大であることを確認できます。
5.並べ替えが完了しました。
明らかに、このアルゴリズムにはn-1ラウンドのソートが必要です。
上記の説明は、毎回最小値を見つける方法にすぎないことに注意する必要があります。実際、毎回最大値を見つけることもできますが、毎回配列の尾に置く必要があります。
Java実装コード:
SelectArray.java
パッケージCH02; public class selectArray {// Array Private long [] arr; //配列のプライベートインクエレムの有効なデータのサイズ。 //デフォルトのコンストラクターpublic selectArray(){arr = new long [50]; } public selectArray(int max){arr = new long [max]; } // insert data public void insert(long value){arr [elems] = value; Elems ++; } // Displas data public void display(){for(int i = 0; i <elems; i ++){system.out.print(arr [i]+""); } system.out.println(); } // [[public] selectsort(){int min = 0;長いtmp = 0l; for(int i = 0; i <elems -1; i ++){min = i; for(int j = i+1; j <elems; j ++){if(arr [j] <arr [min]){min = j; }} tmp = arr [i]; arr [i] = arr [min]; arr [min] = tmp; }}}テストコード:
パッケージch02; public class testselectarray {public static void main(string [] args){selectarray sarr = new selectArray(); sarr.insert(89); sarr.insert(54); sarr.insert(667); sarr.insert(7); sarr.insert(12); sarr.insert(43); sarr.insert(12); sarr.display(); sarr.selectsort(); sarr.display(); }}結果: