Co znamená “ přerušení vazeb ” v kontextu třídění

Jako úkol pohovoru pro vývojáře softwaru jsem dostal úkol. Mám seznam dětí a úkolem je: seřadit děti vzestupně podle jejich časového razítka narození, rozbít vazby podle ID

Struktura dítěte je:

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

V daném kontextu nemohu pochopit význam výrazu „zlomení vazeb“. Myslím, že to může být jedno z následujících:

  • pokud je birth_date stejné – nejprve jde dítě s nižší id
  • při třídění pomocí birth_date ignorujte znak -.

Komentáře

  • Je to ' pravděpodobně první možnost, kterou jste dali.
  • toto je otázka v anglickém jazyce
  • Jak poznamenali ostatní, ' je téměř jistě první interpretací. Chci však jen poradit: pokud je pohovor veden osobně nebo pokud je ' snadno kontaktovat, neváhejte se zeptat pro objasnění právě tam a potom. Nikdo v žádném smyslu to nebude bránit proti vám.

Odpovědět

A tie-break je hra navíc, když dva hráči mají stejný počet bodů, aby rozhodli, kdo je vítězem.

Nikdy jsem neslyšel tento výraz při třídění, ale transpozice z tenisu do této oblasti znamená, že každá jiná věc je stejná, uděláte další srovnání ID, které rozhoduje o tom, kdo je první.

Mluvíte o propojeném seznamu, váhal bych víc, protože kravata je také odkaz nebo spojení. Ale i s tímto významem, v kontextu třídění, by jediné spojení, které by mohlo dávat smysl, bylo spojení rovnosti.

Komentáře

  • Koncept " vazeb " při třídění je určitě dost běžný na to, aby pro něj bylo v SQL použito klíčové slovo. " prolomení remízy " není technický pojem, ale jednoduše znamená vypořádat se s vazbami provedením nějakého dalšího kroku k zajištění jedinečného hodnocení – často krok, který má falešnou nebo náhodnou povahu (například hod mincí k určení fotbalového zápasu nebo údaje o pořadí podle I d).
  • @Steve Děkujeme za toto poučné potvrzení. Ve skutečnosti SQL NAHORU S VÁZANÍMI odkazuje na stejné hodnoty. Na druhé straně C ++ vidí vazby velmi odlišně, std :: tie je skupina prvků spojených dohromady do n-tice. Používá se ' i při třídění, ale pouze k vytvoření lexikografického pořadí mezi prvky.

Odpovědět

V rámci třídění je rozdělování kravat o zajištění celkové objednávky.

Podívejte se na ukázková data:

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

Existují přesně dvě části skutečných dat, co se stane, pokud existují dva lidé se stejnými jmény a daty narození?

Algoritmus řazení nemůže rozhodnout, který z nich jde zaprvé, nebo i když jsou v zásadě totéž, a při kopírování by se to mělo jednoduše zahodit.

To je skutečný problém, protože třídění dvou samostatných kopií seznamu může vést ke dvěma různým uspořádáním a jejich porovnání podle páry prvků (a[0] == b[0] && a[1] == b[1] && ...) by pak vedly k nepravdivosti.

Proto je důležitá celková objednávka.

Nyní již neexistuje skutečná data, abychom rozlišili, tak jak zajistíme, aby byly prvky vždy tříděny do stejného pořadí. T Odpovědí je prolomení vazby pomocí vytvořených dat. Je zcela svévolné, ale nyní není důležité, jak často je seznam kódovaný a uchýlený, vždy roztřídí prvky do stejných pozic, což umožňuje srovnání porovnáním každého páru prvků.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *