1 / 23

IT Računalniško programiranje

IT Računalniško programiranje. Primeri algoritemskih programov (sortiranje, matrične operacije, geometrijske transformacije) Danijel Rebolj, FG 2007/2008. Literatura. D. Knuth: The art of computer programming, Addison Wesley Volume 1 - Fundamental Algorithms

ilar
Download Presentation

IT Računalniško programiranje

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ITRačunalniško programiranje Primeri algoritemskih programov (sortiranje, matrične operacije, geometrijske transformacije) Danijel Rebolj, FG 2007/2008

  2. Literatura • D. Knuth: The art of computer programming, Addison Wesley • Volume 1 - Fundamental Algorithms • Volume 2 - Seminumerical Algorithms • Volume 3 - Sorting and Searching • Volume 4 – 7 v pripravi • 

  3. Časovna zahtevnost • Podatek o tem, koliko časa se bo algoritem pri danih vhodnih podatkih izvajal, preden bo vrnil rešitev • Čas običajno merimo v osnovnih operacijah stroja • Časovno zahtevnost podamo kot funkcijo velikosti vhodnih podatkov (npr. velikost seznama)

  4. Časovna zahtevnost • O-notacija označuje red rasti problema • Primeri (n-velikost vhoda, c-konstanta): O (log n) O (n) O (n2) O (nc) O (cn)

  5. Primeri algoritemskih programov • Zaporedja (primer: Fibonaccijevo) • Operacije z množicami točk • Rotacija kocke • Matrične operacije • Iskanje v seznamu (linearno, binarno) • Sortiranje (bubble sort, selektivno)

  6. Fibonaccijevo zaporedje

  7. Operacije z množicami točk • Premik • Skaliranje • Zrcaljenje • Rotacija • Koordinatno okno • Obseg poligona

  8. Geometrijske transformacije

  9. Rotacija kocke

  10. Rotacija kocke Private Type Tocka X As Double Y As Double Z As Double XP As Double YP As Double End Type Private Type Daljica p1 As Long p2 As Long End Type

  11. Rotacija kocke Dim Ogl(8) As Tocka ‘Oglišča Dim Rob(12) As Daljica ‘robovi kocke Dim IndexOffset As Long ‘zamik indeksa Dim Odmik As Single ‘odmik Dim Ocisce As Single Dim KotRotacije As Single Dim IzrisObstaja As Boolean Dim Rotiraj As Boolean Dim Hitrost As Single

  12. Rotacija kocke Sub Rotacija() If RotacijaX Then _ call RotirajKoordinateOkoliX_ (KotRotacije) If RotacijaY Then _ call RotirajKoordinateOkoliY_ (KotRotacije) If RotacijaZ Then _ call RotirajKoordinateOkoliZ_ (KotRotacije) End Sub

  13. Rotacija kocke Sub RotirajKoordinateOkoliX(Kot As single) Dim i As Long, NovY As Single Dim NovZ As Single For i = 1 To 8 NovY = Ogl(i).Y * Cos(Kot) - _ Ogl(i).Z * Sin(Kot) NovZ = Ogl(i).Y * Sin(Kot) + _ Ogl(i).Z * Cos(Kot) Ogl(i).Y = NovY Ogl(i).Z = NovZ Next i End Sub

  14. Rotacija kocke Sub IzracunajProjekcijeTock() Dim i As Long For i = 1 To 8 Ogl(i).XP = Ogl(i).X * Ocisce / _ (Ocisce + Ogl(i).Z) + Odmik Ogl(i).YP = Ogl(i).Y * Ocisce / _ (Ocisce + Ogl(i).Z) + Odmik Next i End Sub

  15. Matrične operacije • Osnova je dvojna zanka: FOR i = 1 TO n FOR j = 1 to m Matrika (i,j) = 0 NEXT jNEXT i • seštevanje • množenje 

  16. Množenje matrik DIM M(iMmax,jMax),N(jMax,kMax),P(iMax,kMax) FOR i = 1 TO iMax FOR k = 1 TO kMax P (i, k) = 0 FOR j = 1 to jMax P (i,k) = P (i,k) + M (i,j)*N(j,k) NEXT j NEXT k NEXT i

  17. Linearno iskanje v seznamu Strategija: • V neurejenem seznamu podatkov preverimo vsak element ali ustreza iskanemu podatku • Iskanje se konča, ko je iskani element najden ALI ko se senam konča

  18. Binarno iskanje v seznamu • Zahteva urejen seznam elementov • Uporabno kadar mora biti iskanje hitro in se pogosto ponavlja • Temelji na primerjavi med elementom v sredini seznama in iskano vrednostjo • Implementacija je mogoča tudi v rekurzivni obliki

  19. Sortiranje • Enostavno sortiranje ima časovno zahtevnost O (n2): • selektivno sortiranje, bubble sort • Manjša zahtevnost: QuickSort, Merge,... • Primerjava algoritmov  • Podroben prikaz delovanja algoritma QuickSort 

  20. Selektivno sortiranje • Poiščemo najmanjši element v seznamu in ga zamenjamo s prvim (v primeru, ko želimo naraščajoče vrednosti) • Postopek ponavljamo za preostali del seznama dokler ni celoten seznam urejen

  21. Selektivno sortiranje Sub SelektivniSort(n AS Long, seznam()) For i = 1 To n-1 smin = seznam(i): jmin = i For j = i + 1 To n If seznam(j) < smin Then smin = seznam(j): jmin = j endif Next j seznam(jmin) = seznam(i) seznam(i) = smin Next i End Sub

  22. Bubble sort • Elemente v seznamu primerjamo v parih in ju zamenjamo, če je naslednik manjši od predhodnika • Največji element se po enem prehodu seznama znajde na zadnjem mestu (kot mehurček) • Postopek ponavljamo za preostali del seznama dokler ni celoten seznam urejen

  23. Bubble sort Sub BubbleSort(n AS Long, seznam()) FOR i = 0 TO iMax Prvi = Seznam(i) FOR j = i+1 TO iMax Drugi = Seznam (j) if Drugi < Prvi then Seznam(i) = Drugi Seznam(j) = Prvi Prvi = Drugi endif NEXT j NEXT I End Sub

More Related