簡體   English   中英

排序算法解釋復雜性和類型

[英]Sorting Algorithm Explanation Complexity and Type

這是Java中的排序算法。 我必須分析這個算法,但我對這個主題真的很陌生,不確定每一行的作用。 我知道它具有O(N²)的復雜性,但我不明白它是什么類型。
有人可以解釋一下方法someAlgorithm()嗎?

這是代碼:

import java.util.Arrays;

public class SomeClass {
    public static void main(String[ ] args) {
        int[] data = {12, 14, 13, 15, 19, 17, 16, 11, 18, 20};
        System.out.println("Compute some result for the Array : " + Arrays.toString(data));
        int[] result = someAlgorithm(data);
        System.out.println("Resulting Array: " + Arrays.toString(result));
    }
 
    private static int[] someAlgorithm(int[] data) {
        int size = data.length;
        int[] result = new int[size];
        for (int i = 0; i < size; i++) {
            int total = 0;
            for (int j = 0; j <= i; j++) {
                total += data[j];
            }
            int average = total / (i + 1);
            result[i] = average;
            System.out.println("Average for iteration " +  i + " is: " + average);
        }
        return result;
    }
}

方法someAlgorithm()的要點是它將數組data作為輸入並創建另一個相同大小的數組result ,其中result[i]存儲輸入數組的前i個元素的平均值(作為int )。

請注意,您可以保持到目前為止看到的元素的運行總和,並將該算法的復雜性相當容易地降低到O(N)

此外,正如評論中提到的@Alex,這實際上與排序無關,也不是一種排序算法。

算法復雜度有兩種類型:

  1. 空間復雜度
  2. 時間復雜度

正如你所說,這個算法在O(N²)中運行,這是關於時間復雜度的。 這是因為算法運行的時間隨着size變量的平方而增加。 至於空間復雜度,它運行在O(N)中,因為它占用的空間(即內存量)隨着size變量線性增加。

要查看算法運行的時間復雜度,您需要查看有多少嵌套循環,以及它們運行多長時間,具體取決於輸入。

要查看算法運行的空間復雜度,您需要查看數據存儲的時間和位置,以及根據輸入存儲的數據量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM