alphaPlan · Strukturat e të dhënave, algoritmet dhe web-i · Fletë përmbledhëse 04
Të menduarit për efikasitetin
Krahasoji programet sipas mënyrës si rritet puna me hyrjen, jo me kronometër, dhe lëre atë të zgjedhë strukturën dhe renditjen.
Idetë për t’u mbajtur mend
- 01Big-O përshkruan formën e rritjes: ndërsa hyrja n rritet, si rritet me të sasia e punës?
- 02O(1) nuk rritet fare me n, O(n) dyfishohet kur të dhënat dyfishohen, O(n²) katërfishohet kur të dhënat dyfishohen.
- 03Numëro ciklet e ndërthurura mbi të dhënat: pa cikël është shpesh O(1), një cikël është zakonisht O(n), një cikël brenda një cikli është zakonisht O(n²).
- 04Zgjedhja e strukturës së duhur e ndryshon formën e rritjes: një bashkësi e kthen një kontroll dublikatash ose një kalim liste të ftuarish nga punë n² në punë n.
- 05Të japësh pak memorie për një formë më të ulët rritjeje është një këmbim që do ta bësh sërish e sërish.
- 06Renditja me përzgjedhje është O(n²) dhe sorted i gatshëm është O(n log n): mëso renditjen me përzgjedhje për ta kuptuar renditjen, përdor sorted për të renditur vërtet.
Fjalët
- n
- Madhësia e hyrjes; i numëron hapat si funksion të saj në vend që ta masësh programin me kronometër.
- O(1), O(n), O(n²)
- Konstante, lineare, kuadratike: tri format e rritjes që has më shpesh një fillestar.
- if one in seen:
- Një kontroll përkatësie mbi një bashkësi është afërsisht O(1), ndaj i gjithë kontrolli i dublikateve bëhet O(n) me një kalim.
- sorted(scores, reverse=True)
- Kthen një listë të re të renditur, të përmbysur me reverse=True, dhe e lë origjinalin të paprekur.
- scores.sort()
- Bën të njëjtën punë si sorted, por e riorganizon listën origjinale në vend.
- sorted(words, key=len)
- Rendit sipas asaj që zgjedh ti, këtu gjatësia e çdo fjale.
Bëj këtë
- Shkruaj Big-O-në e secilës qasje, pastaj përfytyro hyrjen dhjetë herë më të madhe, në vend që t'i vësh në garë një herë me një shembull të vockël.
- Kthehu te çdo cikël që bën një test in mbi një listë dhe pyet nëse një bashkësi do t'ia ndryshonte Big-O-në.
- Puno mbi një kopje me list(scores) kur një funksion duhet ta lërë listën origjinale të qetë.
- Përdore Big-O për të krahasuar format e rritjes, jo për të shpallur fituesin pa ditur sa të mëdha bëhen vërtet të dhënat.
Kujdes
- Big-O i hedh tej konstantet: një qasje O(n) me hap të shtrenjtë mund të humbasë kundër një qasjeje O(n²) me hap të lirë, derisa n të bëhet i madh.
- O(1) për kërkimin në një bashkësi do të thotë mesatarisht, jo i garantuar të jetë një hap çdo herë.
- n i vogël është rast i vërtetë: me dymbëdhjetë emra, kodi më i thjeshtë që lexohet me një vështrim është zakonisht përgjigjja e duhur.
Gjete diçka të paqartë, të vjetruar ose që mund të përmirësohet? Sugjero një përmirësim