Was bedeutet “ Brechen von Bindungen ” im Zusammenhang mit dem Sortieren von

Als Interviewauftrag für Softwareentwickler habe ich die Aufgabe erhalten. Ich habe eine Liste von Kindern, und die Aufgabe ist: Kinder nach ihrem Geburtsstempel aufsteigend sortieren, Bindungen nach ID aufbrechen

Die Struktur des Kindes ist:

"child": { "id": "14" "name": "John" "birth_date": "1990-12-20T11:50:48Z" } 

Ich kann die Bedeutung des Ausdrucks „Bindungen brechen“ im gegebenen Kontext nicht verstehen. Ich denke, es kann eine der folgenden sein:

  • wenn birth_date gleich ist – zuerst geht ein Kind mit niedrigerem id
  • Ignorieren Sie beim Sortieren mit birth_date das Zeichen -.

Kommentare

  • ' ist wahrscheinlich die erste Option, die Sie angegeben haben.
  • Dies ist eine Frage in englischer Sprache.
  • Wie andere angemerkt haben, ist ' mit ziemlicher Sicherheit die erste Interpretation. Ich möchte jedoch nur einen Rat geben: Wenn das Interview persönlich geführt wird oder wenn es ' eine einfache Möglichkeit gibt, sie zu kontaktieren, können Sie gerne fragen zur Klarstellung genau dort und dann. Niemand mit irgendeinem Sinn wird das gegen Sie halten.

Antwort

A Tie-Break ist ein zusätzliches Spiel, wenn zwei Spieler die gleiche Anzahl von Punkten haben, um zu entscheiden, wer der Gewinner ist.

Ich habe diesen Ausdruck beim Sortieren nie gehört, aber wenn ich von Tennis in diesen Bereich transponiere, bedeutet dies, dass alles andere gleich ist Ein zusätzlicher Vergleich der ID, um zu entscheiden, wer der Erste ist.

Würden Sie von einer verknüpften Liste sprechen, würde ich mehr zögern, da eine Krawatte ist auch ein Link oder eine Verbindung. Aber selbst mit dieser Bedeutung wäre in Ihrem Sortierkontext die einzige Verbindung, die Sinn machen könnte, die Gleichheit.

Kommentare

  • Das Konzept von " bindet " beim Sortieren ist sicherlich häufig genug, um in SQL ein Schlüsselwort dafür zu haben " Unentschieden brechen " ist kein Fachbegriff, sondern bedeutet einfach, sich mit Bindungen zu befassen, indem zusätzliche Schritte unternommen werden, um eindeutige Platzierungen sicherzustellen – häufig Ein Schritt, der unechter oder zufälliger Natur ist (z. B. das Werfen einer Münze, um ein Fußballspiel zu bestimmen, oder das Rangieren von Daten durch I. d).
  • @Steve Vielen Dank für diese aufschlussreiche Bestätigung. In der Tat bezieht sich SQL TOP WITH TIES auf gleiche Werte. Auf der anderen Seite sieht C ++ Bindungen sehr unterschiedlich, std :: tie ist eine Gruppe von Elementen, die zu einem Tupel miteinander verbunden sind. Es ' wird auch beim Sortieren verwendet, jedoch nur, um eine lexikografische Reihenfolge zwischen den Elementen zu erstellen.

Antwort

Im Zusammenhang mit dem Sortieren geht es beim Brechen von Bindungen darum, eine Gesamtreihenfolge sicherzustellen.

Sehen Sie sich die Beispieldaten an:

 "id": "14" //made up data "name": "John" //real data "birth_date": "1990-12-20T11:50:48Z" //real data 

Es gibt genau zwei reale Daten. Was passiert, wenn zwei Personen mit identischen Namen und Geburtsdaten vorhanden sind?

Der Sortieralgorithmus kann nicht entscheiden, welche Daten verwendet werden Erstens oder auch wenn sie im Wesentlichen dasselbe sind und nur beim Kopieren verworfen werden sollten.

Dies ist ein echtes Problem, da das Sortieren von zwei separaten Kopien einer Liste zu zwei unterschiedlichen Reihenfolgen führen kann, indem sie nach verglichen werden Elementpaare (a[0] == b[0] && a[1] == b[1] && ...) würden dann zu false führen.

Aus diesem Grund ist eine Gesamtreihenfolge wichtig.

Jetzt gibt es keine mehr reale Daten, um die Unterscheidung zu treffen, also wie werden wir sicherstellen, dass die Elemente immer in der gleichen Reihenfolge sortiert werden. T. Die Antwort ist, die Krawatte zu brechen, indem man die erfundenen Daten verwendet. Es ist völlig willkürlich, aber jetzt, egal wie oft die Liste verschlüsselt und neu sortiert wird, sortiert es die Elemente immer an den gleichen Positionen, um einen Vergleich zu ermöglichen, indem jedes Elementpaar verglichen wird.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.