Suchen und Sortieren Flashcards

1
Q

Sequentielle Suche

A

Indexpositionen des Feldes werden der Reihe nach betrachtet.

Werte werden mit dem Gesuchten verglichen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Sequentielle Suche Voraussetzung

A

keine, Feld kann unsortiert sein

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Sequentielle Suche Laufzeitanalyse

A

bester Fall: 1
schlechtester Fall: n
Durchschnitt: (n + 1) / 2

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Sequentielle Suche Java Quelltext

A
public class SeqSearch {
   public static final int NO_KEY = -1;
   public static int search(int[] array, int key) {
        for (int i = 0; i < array.length; i++) {
              if (array[i] == key) {
                   return i;
               }
         }
         return NO_KEY;
   }
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Binäre Suche

A

In jedem Schritt wird der Wert in der Mitte des betrachteten Feldbereichs mit dem gesuchten Wert verglichen. Falls diese nicht übereinstimmen, wird die Suche in der linken bzw. rechten Hälfte des Feldbereichs fortgesetzt – abhängig davon, in welcher Hälfte sich der gesuchte Wert aufgrund der Sortierung des Felds befinden muss.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Binäre Suche Voraussetzung

A

Feld muss aufsteigend sortiert sein

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Binäre Suche Laufzeitanalyse

A

bester Fall: 1
schlechtester Fall: log2 (n)
Durchschnitt: log2 (n)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Binäre Suche Java Quelltext

A
public class BinarySearch {
   public static final int NO_KEY = -1;
   public static int search(int[] array, int key) {
       int u = 0, o = array.length - 1;
       while (u <= o) {
          int m = (u + o) / 2;
          if (array[m] == key) {
              return m;
          } else if (key < array[m]) {
              o = m - 1;
          } else {
              u = m + 1;
          }
       }
       return NO_KEY;
   }
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Vergleich Binäre Suche vs. Sequentielle Suche

A
Verfahren  10   10^2   10^3   10^4
sequentiell (n/2)
≈ 5
≈ 50
≈ 500
≈ 5.000
binär (log2n)
≈ 3,3
≈ 6,6
≈ 10,0
≈ 13,3
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

InsertionSort

A

Array imaginär in zwei Felder aufgeteilt:

  • sortiert
  • unsortiert

erstes Element des unsortierten Feldes wird in die richtige Stelle in dem sortierten Feld eingefügt

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

InsertionSort Beispiel:

1 | 5 8 3 9 2

A

1 5 | 8 3 9 2

1 5 8 | 3 9 2

1 3 5 8 | 9 2

1 3 5 8 9 | 2

1 2 3 5 8 9

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

SelectionSort

A

Array imaginär in zwei Felder aufgeteilt:

  • sortiert
  • unsortiert

kleinstes Element des unsortierten Feldes an das sortierte Feld dranhängen

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

SelectionSort Beispiel:

1 | 5 8 3 9 2

A

1 | 5 8 3 9 2

1 2 | 5 8 3 9

1 2 3 | 5 8 9

1 2 3 5 | 8 9

1 2 3 5 8 | 9

1 2 3 5 8 9

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

BubbleSort

A
  1. Die nebeneinanderliegenden Werte werden miteinander verglichen und gegeben Falls getauscht
  2. Das wird solang wiederholt, bis man am Ende des Feldes angekommen ist
  3. Das ganze wiederholt man solange, bis in so einem Durchgang nichts mehr getauscht wurde
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

BubbleSort Beispiel:

1 5 8 3 9 2

A

1 5 3 8 2 9

1 3 5 2 8 9

1 3 2 5 8 9

1 2 3 5 8 9

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

QuickSort

A

rekursives Verfahren

17
Q

Vergleich Aufwand Sortieralgorythmen

A

InsertionSort: n^2
SelectionSort: n^2
BubbleSort: n^2
QuickSort: n * log2 (n)

18
Q

QuickSort Beispiel:

1 5 8 3 9 2

A

1.) ganze liste:
1 5 8 3 9 2
Pivotelement: 8

(1 5 2 3) (9 8)

links: keine größeren Elemente als das Pivotelement
rechts: keine kleineren Elemente als das Pivotelement

2.) linke Hälfte:
1 5 2 3
Pivotelement: 5

1 3 2 5

3.) linke Hälfte:
1 3 2
Pivotelement: 3

1 2 3

4.) linke Hälfte:
1 2
Pivotelement: 1

1 2

2.) rechte Hälfte:
9 8
Pivotelement: 9

8 9