Próbowałem zrozumieć strukturę danych i inny algorytm, następnie pomylono mnie, by zmierzyć złożoność czasu sortowania bąbelkowego.jak obliczyć złożoność czasu sortowania bąbelkowego
for (c = 0; c < (n - 1); c++) {
for (d = 0; d < n - c - 1; d++) {
if (array[d] > array[d+1]) /* For descending order use < */
{
swap = array[d];
array[d] = array[d+1];
array[d+1] = swap;
}
}
}
Teraz każdy mówi Big O najlepszym przypadku O (n), case Średnia (N2) i najgorszy przypadek (N2) .Ale kiedy widzę kod, znajdujący się w pierwszej fazie wewnętrznej pętli biegu n czas potem w sekundę faza n - 1, i n - 2 i tak dalej. Oznacza to, że w każdej iteracji jego wartość maleje. Na przykład, jeśli mają [] = {4, 2, 9, 5, 3, 6, 11} więc całkowita liczba porównań będzie -
1st Phase - 7 time
2nd phase - 6 time
3rd Phase - 5 time
4th Phase - 4 time
5th Phase - 3 time
6th Phase - 2 time
7th Phase - 1 time
Kiedy więc obliczyć czas wygląda = (7 + 6 + 5 + 4 + 3 + 2 + 1) + 7 = 35, ale najgorsza złożoność czasu to n2 jak na dokument.
tak Czy ktoś może mi powiedzieć, jak obliczyć prawidłową wartość.
'O (n^2)' bardzo dużo * nie * oznacza, że całkowita liczba kroków będzie dokładnie równa 'n^2'. – AakashM
Aby dodać do @AakashM, najpierw musisz zrozumieć znaczenie notacji "O (...)". Zobacz na przykład: http://stackoverflow.com/questions/487258/plain-english-explanation-of-big-o/ – Abhay