Alle Originalinhalte werden auf Ukrainisch erstellt. Noch nicht alle Inhalte wurden übersetzt. Einige Beiträge sind möglicherweise nur auf Ukrainisch verfügbar.Mehr erfahren

Was ist MergeSort? Wann und von wem wurde es erstellt? Wie funktioniert MergeSort genau?

Dieser Inhalt wurde automatisch aus dem Ukrainischen übersetzt.
MergeSort - ist ein effizienter Sortieralgorithmus, der das Prinzip "teile und herrsche" verwendet. Er basiert auf der Idee, das Eingangsarray in kleinere Teile zu zerlegen, jeden Teil separat zu sortieren und sie dann zu einem sortierten Array zusammenzuführen.
Die Hauptidee von MergeSort besteht darin, das Ausgangsarray in zwei Hälften zu teilen, bis der Basisfall erreicht ist, wenn im Array nur noch ein oder kein Element verbleibt. Dann beginnt der Merging-Prozess mit der Zusammenführung der beiden sortierten Teile zu einem neuen sortierten Array. Dieser Prozess wird rekursiv wiederholt, bis alle Teile zu einem sortierten Array zusammengeführt sind.
Ein Hauptvorteil von MergeSort ist, dass er immer mit einer zeitlichen Komplexität von O(n log n) arbeitet, wobei n die Anzahl der Elemente im Ausgangsarray ist. Dies macht ihn effizient für die Sortierung großer Datenmengen.

Wann und von wem wurde MergeSort entwickelt?

MergeSort wurde 1945 von John von Neumann entwickelt. Seine Veröffentlichung erfolgte jedoch später, 1948, als sein Kollege Hermann Goldstine die Arbeit von von Neumann während eines Vortrags auf einer Sitzung der American Mathematical Society beschrieb. So begann der Algorithmus MergeSort an Popularität zu gewinnen und wurde ein wichtiger Bestandteil des modernen algorithmischen Wissens und der Informatik.
Von Neumann war ein herausragender Mathematiker, Physiker, Informatiker und Elektrotechniker. Er leistete bedeutende Beiträge zur Entwicklung der Berechnungstheorie, der Computerarchitektur und der numerischen Methoden. MergeSort ist einer der Sortieralgorithmen, die er entwickelt hat, und wurde zur Grundlage für zahlreiche Varianten und Optimierungen, die bis heute verwendet werden.

Beispiel für den MergeSort-Algorithmus (JavaScript).

function mergeSort(arr) {
  if (arr.length <= 1) {
    return arr;
  }
  
  const mid = Math.floor(arr.length / 2);
  const left = arr.slice(0, mid);
  const right = arr.slice(mid);
  
  return merge(mergeSort(left), mergeSort(right));
}

function merge(left, right) {
  const mergedArr = [];
  let i = 0;
  let j = 0;
  
  while (i < left.length && j < right.length) {
    if (left[i] <= right[j]) {
      mergedArr.push(left[i]);
      i++;
    } else {
      mergedArr.push(right[j]);
      j++;
    }
  }
  
  while (i < left.length) {
    mergedArr.push(left[i]);
    i++;
  }
  
  while (j < right.length) {
    mergedArr.push(right[j]);
    j++;
  }
  
  return mergedArr;
}

// Beispiel zur Verwendung
const arr = [8, 5, 2, 9, 1, 7, 6, 3];
const sortedArr = mergeSort(arr);
console.log(sortedArr);
Ergebnis:
[1, 2, 3, 5, 6, 7, 8, 9]
Die Funktion mergeSort() teilt das Eingangsarray rekursiv in zwei Hälften, sortiert jede Hälfte durch einen Aufruf von mergeSort() und führt sie dann mit der Funktion merge() zusammen. Die Funktion merge() fügt zwei sortierte Arrays zu einem sortierten Array zusammen, indem sie die Elemente aus beiden Arrays vergleicht.

Beispiel für den MergeSort-Algorithmus (Ruby).

def merge_sort(arr)
  return arr if arr.length <= 1

  mid = arr.length / 2
  left = arr[0...mid]
  right = arr[mid..-1]

  merge(merge_sort(left), merge_sort(right))
end

def merge(left, right)
  merged_arr = []
  i = 0
  j = 0

  while i < left.length && j < right.length
    if left[i] <= right[j]
      merged_arr << left[i]
      i += 1
    else
      merged_arr << right[j]
      j += 1
    end
  end

  while i < left.length
    merged_arr << left[i]
    i += 1
  end

  while j < right.length
    merged_arr << right[j]
    j += 1
  end

  merged_arr
end

# Beispiel zur Verwendung
arr = [8, 5, 2, 9, 1, 7, 6, 3]
sorted_arr = merge_sort(arr)
puts sorted_arr
Ergebnis:
[1, 2, 3, 5, 6, 7, 8, 9]
Die Funktion merge_sort() teilt das Eingangsarray rekursiv in zwei Hälften, sortiert jede Hälfte durch einen Aufruf von merge_sort() und führt sie dann mit der Funktion merge() zusammen. Die Funktion merge() fügt zwei sortierte Arrays zu einem sortierten Array zusammen, indem sie die Elemente aus beiden Arrays vergleicht.

Dieser Beitrag hat noch keine Ergänzungen vom Autor.

26. Jun, 03:52 Uhr

Was ist PCIe (Peripheral Component Interconnect Express)?

meme code
meme code@memecode
26. Jun, 05:44 Uhr

Was ist Ubuntu Pro? Was ist der Unterschied zwischen Ubuntu und Ubuntu Pro?

meme code
meme code@memecode
26. Jun, 05:44 Uhr

Der letzte Schritt der Installation von Ubuntu. Post-Installationskonfiguration von Ubuntu.

meme code
meme code@memecode
29. Jun, 13:20 Uhr

Was sind ASC und DESC? Was ist der Unterschied? Beispiele für die Verwendung in SQL, JavaScript und Ruby.

meme code
meme code@memecode
30. Jun, 10:07 Uhr

Was ist QuickSort? Wann und von wem wurde es erstellt? Wie funktioniert QuickSort genau?

meme code
meme code@memecode
30. Jun, 10:50 Uhr

Was ist Rekursion? Ein Beispiel für Rekursion im realen Leben. Die Folgen unendlicher Rekursion.

meme code
meme code@memecode
30. Jun, 12:15 Uhr

Was ist der Unterschied zwischen QuickSort und MergeSort?

meme code
meme code@memecode
03. Jul, 05:03 Uhr

Was ist MS-DOS? Wann und von wem wurde MS-DOS erstellt?

meme code
meme code@memecode
03. Jul, 06:45 Uhr

Was ist eine API (Application Programming Interface)?

meme code
meme code@memecode
10. Jul, 05:43 Uhr

Was ist ein Distributionspaket?

meme code
meme code@memecode
24. Jul, 11:02 Uhr

Was ist apt-get in Ubuntu?

meme code
meme code@memecode
24. Jul, 11:25 Uhr

Wie installiert man Steam in Ubuntu? Steam über das Terminal installieren.

meme code
meme code@memecode