ソートアルゴリズム---選択ソート(Javaバージョン)

単純な選択ソート

原理

選択ソート(選択ソート)の原理は挿入ソートに似ており、ソートされた間隔とソートされていない間隔にも分けられます。ただし、選択ソートでは、毎回ソート間隔から最小の要素が検索され、ソートされた間隔の最後に配置されます。

簡単な選択とソートの実行プロセスは、次の図に示すようにコードによって実装されます。
ここに画像の説明を挿入

public class SelectSort {
    
    
    public static void main(String[] args) {
    
    
        int arr[] = {
    
    34,1,139,101};
        for (int i = 0; i < arr.length; i++) {
    
    
            int minIndex = i;
            int min = arr[i];
            for (int j = i + 1; j < arr.length; j++) {
    
    
                //找最小值
                if (min > arr[j]) {
    
    
                    //如果最初的min值比后面的值大,说明不是最小值,重置min值,直到找到对应位置最小的min值
                    min = arr[j];
                    minIndex = j;
                }
            }
            //先找到对应位置的最小值,再将找到的最小值与最初的值进行交换
            //将最小值与最初的值进行交换
            if (minIndex != i) {
    
    
                arr[minIndex] = arr[i];
                arr[i] = min;
            }
            System.out.println(Arrays.toString(arr));
        }
    }
}

1:選択ソートの時間計算量はどれくらいですか?

以前の分析方法の分析と組み合わせると、選択ソートの最良の場合の時間計算量はO(n ^ 2)であり、最悪の場合の時間計算量はO(n ^ 2)であり、平均時間計算量は次のとおりです:O(n ^ 2)。

2:選択ソートのスペースの複雑さは何ですか?

アルゴリズムの実装を通じて、選択ソートのスペースの複雑さは、インプレースソートアルゴリズムであるO(1)であることがわかります。

3:選択的ソートは安定したソートアルゴリズムですか?

選択ソートは、残りのソートされていない要素の中で常に最小値を見つけ、位置をソートされていない範囲の最初の要素と交換するため、安定したソートアルゴリズムではありません。これにより、5、8、5、2、9などの安定性が損なわれます。このようなデータのセットでは、選択ソートアルゴリズムを使用してソートすると、最小の要素2が初めて検出され、最初の5の位置が交換され、最初の5と中央の5の順序が変わります。 、なので不安定になります。このため、選択ソートは、安定性の点でバブルソートや挿入ソートよりもわずかに劣ります。

おすすめ

転載: blog.csdn.net/qq_33626996/article/details/113178888