単純な選択ソート
原理
選択ソート(選択ソート)の原理は挿入ソートに似ており、ソートされた間隔とソートされていない間隔にも分けられます。ただし、選択ソートでは、毎回ソート間隔から最小の要素が検索され、ソートされた間隔の最後に配置されます。
簡単な選択とソートの実行プロセスは、次の図に示すようにコードによって実装されます。
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の順序が変わります。 、なので不安定になります。このため、選択ソートは、安定性の点でバブルソートや挿入ソートよりもわずかに劣ります。