Я хочу знать большую нотацию 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;
}
Вы никогда не достигнете O (n) для алгоритма сортировки. – GriffeyDog
Это двухсторонняя сортировка пузырьков, так что это 'O (n²)' как тип пузыря. –
@GriffeyDog Это справедливо только для сортировки на основе сравнения. Другие алгоритмы могут обменять увеличенную пространственную сложность для улучшения временной сложности (например, сортировка по методу radix). – chepner