Ce înseamnă “ ruperea legăturilor ” în contextul sortării

Ca misiune de interviu pentru dezvoltatorul de software, am primit sarcina. Am o listă de copii, iar sarcina este: sortarea copiilor în creștere după data lor de naștere, rupând legăturile prin ID

Structura copilului este:

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

Nu pot obține sensul expresiei „rupere de legături” în contextul dat. Cred că poate fi una dintre următoarele:

  • dacă birth_date este același – mai întâi merge copilul cu id
  • în timp ce sortați utilizând birth_date, ignorați semnul -.

Comentarii

  • Este ' probabil prima opțiune pe care ați dat-o.
  • aceasta este o întrebare în limba engleză
  • După cum au remarcat alții, ' este aproape sigur prima interpretare. Vreau doar să dau un sfat, totuși: dacă interviul se desfășoară personal sau dacă există ' o modalitate ușoară de a le contacta, nu ezitați să întrebați pentru clarificare chiar acolo și apoi. Nimeni cu nici un sens nu va împiedica acest lucru.

Răspunde

A tie-break este o joacă suplimentară atunci când doi jucători au același număr de puncte, pentru a decide cine este câștigătorul.

Nu am auzit niciodată această expresie în sortare, dar transpunând de la tenis în acea zonă, înseamnă că orice altceva fiind egal, faci o comparație suplimentară pe id pentru a decide cine este primul.

Ați vorbi despre o listă de linkuri, aș ezita mai mult, deoarece o cravată este, de asemenea, o legătură sau o conexiune. Dar chiar și cu acest sens, în contextul dvs. de sortare, singura conexiune care ar putea avea sens ar fi aceea a egalității.

Comentarii

  • Conceptul de " legături " în sortare este cu siguranță suficient de comun pentru a avea un cuvânt cheie pentru acesta în SQL. " rupe o egalitate " nu este un termen tehnic, ci înseamnă pur și simplu să tratezi legăturile făcând un pas suplimentar pentru a asigura un clasament unic – adesea un pas de natură falsă sau aleatorie (cum ar fi aruncarea unei monede pentru a determina un meci de fotbal sau clasarea datelor de către I d).
  • @Steve Vă mulțumim pentru această confirmare iluminatoare. Într-adevăr, SQL TOP WITH TIES se referă la valori egale. Pe de altă parte, C ++ vede legăturile foarte diferit, std :: tie fiind un grup de elemente legate între ele într-un tuplu. Este ' folosit și în sortare, dar doar pentru a crea o ordine lexicografică între elemente.

Răspuns

În contextul sortării, întreruperea egalității se referă la asigurarea unei comenzi totale.

Aruncați o privire asupra datelor de exemplu:

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

Există exact două date reale, ce se întâmplă dacă există două persoane cu nume și date de naștere identice?

Algoritmul de sortare nu poate decide care merge mai întâi sau chiar dacă sunt în esență același lucru și ar trebui să se arunce doar pe copie.

Aceasta este o problemă reală, deoarece sortarea a două copii separate ale unei liste ar putea duce la două ordonări diferite, comparându-le după perechile de elemente (a[0] == b[0] && a[1] == b[1] && ...) ar avea ca rezultat false.

Acesta este motivul pentru care este importantă o comandă totală.

Acum nu mai există date reale pentru a face distincția, deci cum ne vom asigura că elementele vor fi întotdeauna sortate în aceeași ordine. T el răspunde este să rupă egalitatea folosind datele inventate. Este complet arbitrar, dar acum indiferent de frecvența cu care lista este amestecată și apelată, va ordona întotdeauna elementele în aceleași poziții, permițând compararea comparând fiecare pereche de elemente.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *