時間と空間の複雑さの分析 – 挿入ソート アルゴリズム
だいたい
挿入ソートアルゴリズムとは?
バブルソートのアルゴリズムは、あるパーツを最初から指定し、そのパーツの最後の番号とその前の番号を順番に比較し、最後に適切な位置に挿入するというものです。
演算が 0~n になるまでサイクルを繰り返します。
コード部分
public class InsertSort {
public static void main(String[] args) {
int[] arr = {
79,3213,3,5,45,65};
insertSort(arr);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
public static void insertSort(int[] arr) {
if (arr == null || arr.length < 2) {
return;
}
for (int i = 1; i < arr.length; i++) {
for (int j = i; j > 0 && arr[j] < arr[j - 1]; j--) {
swap(arr, j, j-1);
}
}
}
public static void swap(int[] arr, int a, int b) {
int temp = arr[a];
arr[a] = arr[b];
arr[b]= temp;
}
}
それの時間複雑度分析と空間複雑度分析
最初に時間の複雑さについて話しましょう。
その時間計算量は、データの配置に応じて変換されます。これは、セレクション ソートやバブル ソートとは根本的に異なります。
最悪の場合、現在の数値を以前のすべての数値と交換する必要があるたびに、それは 1 + 2 + であると想定します。. . +n-1
は算術数列なので、時間計算量は O( n 2 n^{2}n2)。これは最悪のシナリオです。
最良の場合、配列はソートされ、時間計算量は O(n) です。
最良の場合
空間の複雑さについて話しましょう
スペースの複雑さ 作成された変数は、temp
スペースの複雑さが O(1) であるためです。