Presentation laddar. Vänta.

Presentation laddar. Vänta.

Några standardalgoritmer Utökning och minskning av vektor Sortering av vektor Sökning i vektor Sammanslagning av sorterade vektorer.

Liknande presentationer


En presentation över ämnet: "Några standardalgoritmer Utökning och minskning av vektor Sortering av vektor Sökning i vektor Sammanslagning av sorterade vektorer."— Presentationens avskrift:

1 Några standardalgoritmer Utökning och minskning av vektor Sortering av vektor Sökning i vektor Sammanslagning av sorterade vektorer

2 Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 22 Utökning Indata: vektor, nytt Skapa nyVektor med längden av vektor + 1 i = 0 returnera nyVektor i < vektorns längd nyVektor[i] = vektor[i] true false Lägg nytt på sista platsen i nyVektor i = i + 1 Utökning av en vektor (FD)

3 Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 33 Indata: vektor, nytt Skapa nyVektor med längden av vektor + 1 i = 0 nyVektor[i] = vektor[i] Utökning Stomme Yttre loop * (i < vektorns längd) Lägg nytt på sista platsen i nyVektor returnera nyVektor i = i + 1 Utökning av en vektor (JSP)

4 Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 44 SlimArray Indata: vektor, index Skapa nyVektor med längden av vektor - 1 i = 0 i < index nyVektor[i] = vektor[i] true false i = index + 1 returnera nyVektor i < vektorns längd nyVektor[i-1] = vektor[i] true false i = i + 1 i = i + 1 Minskning av en vektor (FD)

5 Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 55 Indata: vektor, index Skapa nyVektor med längden av vektor - 1 i = 0 nyVektor[j] = vektor[i] SlimArray Stomme Första loop * (i < index) returnera nyVektor i = i + 1 nyVektor[j] = vektor[i] Stomme Andra loop * (i < vektorns längd) i = i + 1 i = index + 1 Minskning av en vektor (JSP)

6 Sorteringar

7 Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 77 JSPFlödesdiagram Swap Indata: vektor index a index b temp = vektor[a] vektor[a] = vektor[b] vektor[b] = temp Stopp temp = vektor[a] vektor[a] = vektor[b] vektor[b] = temp Swap Indata: vektor index a index b Swap

8 Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 88 BubbleSort Indata: vektor osorterad = true end = längden av vektorn - 1 end = end - 1 Stopp osorterad? osorterad = false j < end j = 0 true vektor[j] > vektor[j + 1] osorterad = true Swap (vektor, j, j+1) true false true false j = j + 1 BubbleSort (FD)

9 Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 99 Indata: vektor osorterad = true end = längden av vektorn - 1 end = end - 1 osorterad = false j = 0 osorterad = true Swap (vektor, j, j+1) BubbleSort Stomme Yttre loop * (osorterad) Stomme Inre loop (j < end) * o ( vektor[j] > vektor[j + 1] ) Selektion j = j + 1 BubbleSort (JSP)

10 Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 10 Exchange Indata: vektor i = 0 Stopp i < vektorns längd - 1? minst = i j < vektorns längd j = i + 1 true vektor[minst] > vektor[j] Swap (vektor, minst, i) true false true false minst = j i < minst true false j = j + 1 i = i + 1 ExchangeSort (FD)

11 Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 11 Indata: vektor i = 0 minst = i j = i + 1 Swap (vektor, minst, i) Exchange Stomme Yttre loop * (i < vektorns längd - 1) Stomme Inre loop (j < vektorns längd ) * o ( vektor[minst] > vektor[j] ) Selektion j = j + 1 Selektion i = i + 1 minst = j (i < minst) o ExchangeSort (JSP)

12 Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 12 Flödesdiagram JSP Indata: vektor, target i = 0 Linjär sökning Iteration * (i < vektorns längd) o ( vektor[i] = target ) Selektion i = i + 1 returnera i Linjär Sökning Indata: vektor, target i = 0 returnera -1 i < vektorns längd? vektor[i] == target true false true false minst = j returnera i returnera Linjär sökning

13 Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 13 Binär Sökning Indata: vektor, target returnera -1 high – low > 1 vektor[probe] > target true false true false returnera low high = vektorns längd low = -1 probe = (high + low) / 2 high = probe low = probe low = -1 eller vektor[low] <> target false true Binär sökning (FD)

14 Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 14 Indata: vektor, target high = vektorns längd Binär sökning Iteration * (high – low > 1) ( low = -1 eller vektor[low] <> target) Selektion probe = (high + low) / 2 returnera low = -1 o returnera low o (vektor[probe] > target) Selektion high = probe o low = probe o Binär sökning (JSP)

15 Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 15 i < längden av merged countFirst = längden på first true false true false returnera merged countSecond = countSecond + 1 Merged[i] = second[countSecond] countSecond = längden på second countFirst = countFirst + 1 Merged[i] = first[countFirst] first[countFirst] < second[countSecond] countFirst = countFirst + 1 Merged[i] = first[countFirst] true countSecond = countSecond + 1 Merged[i] = second[countSecond] false Merge Indata vektorer: first, second Skapa ny vektor merged med längd av first + second countFirst = 0 countSecond = 0 i = 0 first är tomsecond är tom returnera second returnera first true false i = i + 1 Förena listor (FD)

16 Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 16 Indata vektorer: first, second Merge Iteration * (om first är tom) Selektion i = i + 1 returnera second o returnera first o Selektion (om second är tom) Skapa ny vektor merged med längd av first + second countFirst = 0 countSecond = 0 i = 0 (i < längden av merged) o o o o (countFirst = längden på first) (countSecond = längden på second) (first[countFirst] < second[countSecond] ) returnera merged merged[i] = second[countSecond] countSecond = countSecond + 1 countFirst = countFirst + 1 merged[i] = first[countFirst] countFirst = countFirst + 1 merged[i] = first[countFirst] merged[i] = second[countSecond] countSecond = countSecond + 1 Förena listor (JSP)

17 Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 17 Sortering och sökning på annat än heltal Om vi ex. vill sortera en vektor av böcker, måste vi jämföra på annat än numeriska värden: if ( vektor[probe].ISBN.CompareTo( target ) > 0 ) Som Du ser kan vi här inte använda de vanliga relationsoperatorerna, eftersom string inte implementerat dem, utan vi är då istället tvungna att använda metoden CompareTo.

18 Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 18 Brytning av listor Att tänka på: Vilket eller vilka fält sorterar vi efter? Vilket eller vilka fält bryter vi på? Vilka variabler skall nollställas vid brytningen? Vilka skall inte nollställas?


Ladda ner ppt "Några standardalgoritmer Utökning och minskning av vektor Sortering av vektor Sökning i vektor Sammanslagning av sorterade vektorer."

Liknande presentationer


Google-annonser