这个特定代码的大O符号是什么?

时间:2013-05-21 14:14:00

标签: java performance algorithm big-o

我想知道Big O符号和Big Omega符号 (最坏的情况,最好的情况)这段代码 这是一种排序算法,我的猜测是它有一个O(n)Omega(n)

public static void swap(int[] A, int i,int j){
    int temp = 0;
    temp = A[i];
    A[i] = A[j];
    A[j] = temp;
}

public static int[] MyAlgorithm(int[] A, int n){

    boolean done = true;
    int j =0;
    while(j<=(n-2)){
        if(A[j]>A[j+1]){
            swap(A,j,j+1);
            done = false;
        }
        j = j+1;
    }
    j = n-1;

    while(j>=1){
        if(A[j]<A[j-1]){
            swap(A, j-1,j);
            done = false;
        }
        j = j-1;
    }

    if(done==false){
        MyAlgorithm(A,n);
    }

    return A;
}

1 个答案:

答案 0 :(得分:2)

它是O(n ^ 2)(对于列表[n, n-1, ..., 1]),Omega(n)表示[1, 2, ..., n]