時間と空間の複雑さの分析 -- 挿入ソート アルゴリズム

時間と空間の複雑さの分析 – 挿入ソート アルゴリズム

だいたい

挿入ソートアルゴリズムとは?

バブルソートのアルゴリズムは、あるパーツを最初から指定し、そのパーツの最後の番号とその前の番号を順番に比較し、最後に適切な位置に挿入するというものです。

ここに画像の説明を挿入

ここに画像の説明を挿入

演算が 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) であるためです。

おすすめ

転載: blog.csdn.net/abaidaye/article/details/126581338