Vad betyder “ bryta band ” i samband med sortering

Som intervjuuppdrag för programutvecklare har jag fått uppgiften. Jag har en lista med barn, och uppgiften är att sortera barn uppåt efter deras födelsedatum tidsstämpel, bryta band efter ID

Barnets struktur är:

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

Jag kan inte få innebörden av frasen ”bryta band” i det givna sammanhanget. Jag antar att det kan vara något av följande:

  • om birth_date är densamma – först går barn med lägre id
  • medan du sorterar med birth_date, ignorera - -tecknet.

Kommentarer

  • Det ' är förmodligen det första alternativet du gav.
  • detta är en engelskspråkig fråga
  • Som andra har noterat är det ' nästan säkert den första tolkningen. Jag vill bara ge ett råd, dock: om intervjun genomförs personligen eller om det finns ' är det lätt att kontakta dem för förtydligande precis där och då. Ingen med någon mening kommer att hålla det mot dig.

Svar

A tie-break är ett extra spel när två spelare har samma antal poäng för att avgöra vem som vinner.

Jag hörde aldrig detta uttryck vid sortering, men att transponera från tennis till det området, det betyder att allt annat är lika, gör du en extra jämförelse av id för att avgöra vem som är först.

Skulle du tala om en länkad lista skulle jag tveka mer, för en slips är också en länk eller en anslutning. Men även med denna betydelse, i ditt sammanhang för sortering, är den enda anslutningen som kan vara vettig att vara likhet.

Kommentarer

  • Begreppet " knyter " vid sortering är säkert vanligt att ha ett nyckelord för det i SQL. " bryta slips " är inte en teknisk term utan betyder helt enkelt att hantera band genom att ta ytterligare ett steg för att säkerställa unik ranking – ofta ett steg som är falskt eller slumpmässigt (som att slänga ett mynt för att bestämma en fotbollsmatch eller rangordna data efter I d).
  • @Steve Tack för denna upplysande bekräftelse. I själva verket hänvisar SQL TOP WITH TIES till lika värden. På andra sidan ser C ++ banden väldigt annorlunda, std :: tie är en grupp element länkade ihop till en tupel. Den ' används också vid sortering, men bara för att skapa en lexikografisk ordning mellan elementen.

Svar

I samband med sorteringen handlar det om att säkerställa en total order.

Ta en titt på exempeldata:

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

Det finns exakt två verkliga data, vad händer om det finns två personer med identiska namn och födelsedatum?

Sorteringsalgoritmen kan inte bestämma vilken som går först, eller till och med om de är i huvudsak samma sak, och det ska bara kasseras på kopian.

Detta är ett verkligt problem eftersom sortering av två separata kopior av en lista kan resultera i två olika ordningar, jämförelse med elementpar (a[0] == b[0] && a[1] == b[1] && ...) skulle då resultera i falskt.

Det är därför en total ordning är viktig.

Nu finns det inga fler verkliga data att göra skillnad på, så hur ska vi se till att elementen alltid kommer att sorteras i samma ordning. svaret är att bryta slipsen med hjälp av de gjorda uppgifterna. Det är helt godtyckligt, men nu, oavsett hur ofta listan krypteras och tillgripas, kommer den alltid att sortera elementen i samma positioner som möjliggör jämförelse genom att jämföra varje elementpar.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *