2011-11-09, 19:47
  #1
Medlem
Algorithm bubblesort(A, n):
Input: An array A storing n integers.
Output: An array with the same integers in ascending order.
isReady = false
while not isReady
for i = 0 to n - 2
if A[i] > A[i+1] then
swap(A[i], A[i+1])
isReady = true
for i = 0 to n - 2
if A[i] > A[i+1] then
isReady = false



Någon som kan hjälpa? Ska räkna ut hur lång tid det tar för att exekvera algoritmen, bubblesort (( VÄRSTA FALLET ))
Det värsta fallet är om arrayen står t.ex [4,3,2,1]

Åh bubblesort är en algoritm som ska göra så att Arrayen blir sorterad med minsta värdet först osv.

Nån som kan hjälpa hur man ska räkna ut det värsta fallet, för ett givet n ?
Citera
2011-11-09, 20:03
  #2
Medlem
Från wiki

"Bubble sort has worst-case and average complexity both О(n2)" (nästad for loop)

Man räknar aldrig komplexitet i tid. Din implemtation av Bubble sort vill ta olika tid att exikvera på din och min maskin.
Citera
2011-11-09, 20:12
  #3
Medlem
Citat:
Ursprungligen postat av isato
Från wiki

"Bubble sort has worst-case and average complexity both О(n2)" (nästad for loop)

Man räknar aldrig komplexitet i tid. Din implemtation av Bubble sort vill ta olika tid att exikvera på din och min maskin.



duude... självklart ärre så. Men nu ska vi räkna på n.

Jag får ut värsta fallet som n(n-1) men som alla säger ska värsta fallet vara n^2
Citera
2011-11-09, 20:18
  #4
Medlem
Citat:
Ursprungligen postat av CRAZIE
duude... självklart ärre så. Men nu ska vi räkna på n.

Jag får ut värsta fallet som n(n-1) men som alla säger ska värsta fallet vara n^2


Säg att du sorterar 100000 tal. 100000(100000-1) jämfört med 100000*100000. Skillnaden är försumbar och man säger att den har n*n.

Edit: Tror jag
Citera
2011-11-09, 20:37
  #5
Medlem
Citat:
Ursprungligen postat av isato
Säg att du sorterar 100000 tal. 100000(100000-1) jämfört med 100000*100000. Skillnaden är försumbar och man säger att den har n*n.

Edit: Tror jag


har suttit å diskuterat lite me classmates, å nu får vi fram att whileloopen körs n-1 gång

Sedan har vi två for loopar... varje loop körs n-1 gång.

2*(n-1)

Sedan körs whieloopen n-1 gång.. alltså blir det (n-1)*2(n-1) = 2(n-1)^2

Vilket är blir 2n^2... när n-> oo ( oändligheten ) ..
Citera
2011-11-09, 21:02
  #6
Medlem
Citat:
Ursprungligen postat av CRAZIE
har suttit å diskuterat lite me classmates, å nu får vi fram att whileloopen körs n-1 gång

Sedan har vi två for loopar... varje loop körs n-1 gång.

2*(n-1)

Sedan körs whieloopen n-1 gång.. alltså blir det (n-1)*2(n-1) = 2(n-1)^2

Vilket är blir 2n^2... när n-> oo ( oändligheten ) ..
Vilket är O(n^2) då konstanter kan tas bort.
Citera
2011-11-09, 21:03
  #7
Medlem
Celenos avatar
Citat:
Ursprungligen postat av CRAZIE
Vilket är blir 2n^2... när n-> oo ( oändligheten ) ..

Komplexiteten i en algoritm beror inte på antal element "minus ett". Det har inget med gränsvärden att göra, komplexiteten är O(n^2) för alla n.

Linjär kod, tex, har komplexiteten konstant tid = O(1). Det blir inte O(2) bara för att koden är dubbelt så lång.

För övrigt körs loopen inte n-1 gånger om n=1.
Citera
2011-11-09, 21:33
  #8
Medlem
Sigrid80s avatar
Citat:
Ursprungligen postat av CRAZIE
Algorithm bubblesort(A, n):
Input: An array A storing n integers.
Output: An array with the same integers in ascending order.
isReady = false
while not isReady
for i = 0 to n - 2
if A[i] > A[i+1] then
swap(A[i], A[i+1])
isReady = true
for i = 0 to n - 2
if A[i] > A[i+1] then
isReady = false



Någon som kan hjälpa? Ska räkna ut hur lång tid det tar för att exekvera algoritmen, bubblesort (( VÄRSTA FALLET ))
Det värsta fallet är om arrayen står t.ex [4,3,2,1]

Åh bubblesort är en algoritm som ska göra så att Arrayen blir sorterad med minsta värdet först osv.

Nån som kan hjälpa hur man ska räkna ut det värsta fallet, för ett givet n ?

KTH D11?
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in