Co oznacza “ zrywanie więzi ” w kontekście sortowania

Jako zlecenie na rozmowę kwalifikacyjną z programistą otrzymałem zadanie. Mam listę dzieci, a zadanie jest następujące: posortuj dzieci rosnąco według sygnatury czasowej ich daty urodzenia, zrywanie więzi według identyfikatora

Struktura dziecka jest następująca:

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

Nie mogę zrozumieć znaczenia wyrażenia „zrywanie więzi” w danym kontekście. Myślę, że może to być jedna z następujących sytuacji:

  • jeśli birth_date jest takie samo – najpierw dziecko z niższym id
  • podczas sortowania przy użyciu znaku birth_date zignoruj znak -.

Komentarze

  • To ' to prawdopodobnie pierwsza opcja, którą podałeś.
  • to jest pytanie w języku angielskim
  • Jak zauważyli inni, jest to ' prawie na pewno pierwsza interpretacja. Chcę jednak tylko doradzić: jeśli rozmowa jest prowadzona osobiście lub jeśli ' jest łatwym sposobem na skontaktowanie się z nimi, zachęcamy do zapytania dla wyjaśnienia od razu. Nikt z rozsądkiem nie będzie miał tego przeciwko tobie.

Odpowiedź

A tie-break to dodatkowa gra, w której dwóch graczy ma taką samą liczbę punktów, aby zdecydować, kto wygra.

Nigdy nie słyszałem tego wyrażenia podczas sortowania, ale transponując z tenis do tego obszaru, oznacza to, że wszystko inne jest równe, dodatkowe porównanie identyfikatora, aby zdecydować, kto pierwszy.

Czy powiedziałbyś o liście połączonej Wahałbym się bardziej, ponieważ remis jest również łączem lub połączeniem. Ale nawet przy takim znaczeniu, w kontekście sortowania, jedynym połączeniem, które mogłoby mieć sens, byłoby połączenie równości.

Komentarze

  • Koncepcja " ties " w sortowaniu jest z pewnością na tyle powszechna, że ma dla niej słowo kluczowe w SQL. " rozwiąż remis " nie jest terminem technicznym, ale po prostu oznacza radzenie sobie z remisami, wykonując dodatkowe kroki w celu zapewnienia niepowtarzalnych rankingów – często krok, który ma charakter fałszywy lub losowy (taki jak rzucanie monetą w celu ustalenia meczu piłki nożnej lub dane rankingowe przez I d).
  • @Steve Dzięki za to pouczające potwierdzenie. Rzeczywiście, SQL TOP WITH TIES odnosi się do równych wartości. Z drugiej strony C ++ widzi powiązania zupełnie inaczej, std :: tie będący grupą elementów połączonych razem w krotkę. ' jest również używany do sortowania, ale tylko do tworzenia porządku leksykograficznego między elementami.

Odpowiedź

W kontekście sortowania, rozwiązywanie remisów polega na zapewnieniu całkowitej kolejności.

Spójrz na przykładowe dane:

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

Istnieją dokładnie dwa fragmenty prawdziwych danych, co się stanie, jeśli będą dwie osoby o identycznych imionach i datach urodzenia?

Algorytm sortowania nie może zdecydować, która z nich zostanie wybrana po pierwsze, lub nawet jeśli są w zasadzie tym samym i powinny po prostu odrzucić przy kopiowaniu.

Jest to prawdziwy problem, ponieważ sortowanie dwóch oddzielnych kopii listy może skutkować dwoma różnymi uporządkowaniami, porównując je według pary elementów (a[0] == b[0] && a[1] == b[1] && ...) skutkowałyby wtedy fałszem.

Dlatego tak ważna jest całkowita kolejność.

Teraz nie ma już rzeczywiste dane, aby dokonać rozróżnienia, więc w jaki sposób zapewnimy, że elementy będą zawsze sortowane w tej samej kolejności. T Odpowiedź brzmi: zerwać remis za pomocą zmyślonych danych. Jest to całkowicie dowolne, ale teraz bez względu na to, jak często lista jest zaszyfrowana i uciekana, zawsze sortuje elementy w te same pozycje, umożliwiając porównanie przez porównanie każdej pary elementów.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *