Programmieren – die besten Beiträge

Korrektheitsbeweis Algorithmus?

Hallo liebe Community,

ich habe eine Aufgabe bekommen in welcher ich Pseudocode entwickeln soll. Meinem Algorithmus wird ein Array an Zahlen gegeben A[1, n] mit n Einträgen. Ich soll in diesem Array die Senken zählen. Eine Senke ist dabei eine Position i [2, n - 1] für die folgendes gilt: A[i - 1] > A[i] < A[i + 1].

Meiner Auffasung nach bedeutet das nun, dass z.B. das Array [1, 3, 2, 4, 3, 5] zwei Senken hat. Nämlich einmal der dritte Eintrag und der fünfte Eintrag.

Mein Pseudocode sieht folgendermaßen aus:

Input: A[1, n] mit n Einträgen
Output: Anzahl der Senken

counter := 0
for j := 2 to n - 1 do
  val := A[j]
  if val < A[j - 1] and val > A[j + 1] do
    counter := counter + 1

Mein Java Code dazu sieht folgendermaßen aus:

public static int countSenken(int[] arr) {
  int counter = 0;
  for (int i = 1; i < arr.length - 1; i++) {
    int val = arr[i];
    if (val < arr[i - 1] && val < arr[i + 1]) {
      counter++;
    }
  }
}

Nun soll ich die Korrektheit meines Algorithmus' beweisen. Wir haben das schonmal an dem Beispiel des Insertionsort Algorithmus' gemacht. Die herangehensweise ist ja eigentlich, dass man eine Schleifeninvariante aufstellt und diese dann mittels Induktion beweist. Mein Problem ist jetzt aber, dass ich diese Schleifeninvariante nicht aufstellen kann. Beim Insertionsort, da beweist man ja die Sortiertheit und da verändert sich ja das Array. Aber bei diesem Algorithmus jetzt da verändert sich das Array ja gar nicht.

Ich weiß halt, dass n >= 3 sein muss damit der Algorithmus überhaupt funktioniert. Kann mir vielleicht jemand einen Ansatz geben wie ich die Korrektheit beweise?

Ich wäre euch allen sehr dankbar :)

Computer, Schule, Mathematik, programmieren, Informatik, Algorithmus, Algorithmen und Datenstrukturen

Bankkaufmann Ausbildung abbrechen?

Hi,

ich habe 2020 eine Ausbildung bei der Sparkasse hum Bankkaufmann angefangen. Ich habe relativ schnell gemerkt das es aber doch nicht so meins ist. Es macht mir keinen spaß langweilige Aufgaben am Schalter zu machen und in Terminen Kunden Versicherungen anzudrehen finde ich auch nicht so prickelnd.

Als kleine Rand Info: ich habe kein Abitur und nach dem Realschulabschluss bin ich sofort in die Ausbildung.Ich bin 18 Jahre alt.

Ich Quäle mich eigentlich nur jeden Tag zur Arbeit und mit dementsprechend auf die Idee gekommen etwas anderes zu machen. Ich Interessiere mich eigentlich ziemlich für Informatik/Programmieren(Wobei ich angst habe das mir täglich durchgehend vorm Bildschirm sitzen und Programmieren zu viel wird). Ich probiere auch immer wieder beim Programmieren rum und beschäftige mich generell viel mit „It zeug“. Auch bin ich mir nicht sicher ob ich die Abschluss Prüfung der Ausbildung überhaupt bestehen würde da meine Berufschulnoten auch nicht so gut bis schlecht sind(Was bestimmt auch daran liegt das ich gar keine Motivation habe dafür zu lernen).

Ich habe 3 Optionen im Kopf

  1. Ich breche die Ausbildung zum Sommer hin ab und fange eine Ausbildung zum Informatiker an.
  2. Ich versuche die Bankkaufmann Ausbildung durch zuziehen und Studiere anschließend Informatik
  3. Option 2 nur das ich versuche ohne Studium (eventuell durch „weiterbildungen“) in eine It Abteilung zu kommen.

Ich habe schon mit ein paar Freunden trüber gesprochen aber wollte nochmal ein paar neutrale Meinungen hören :) Also wenn jemand schon Erfahrung oder sonstiges hat immer gerne raus damit.

Schule, programmieren, Ausbildung, Karriere, Bankkaufmann, Bundesagentur für Arbeit, Informatik, Informatiker, Lebenslauf, Ausbildung und Studium, Beruf und Büro

Meistgelesene Beiträge zum Thema Programmieren