정렬 맥락에서 “ 연결 끊기 ” 의미

소프트웨어 개발자 면접 과제로 과제를 받았습니다. 자녀 목록이 있으며 작업은 다음과 같습니다. birth_date 타임 스탬프를 기준으로 자녀를 오름차순으로 정렬, ID로 유대를 끊기

자식의 구조는 다음과 같습니다.

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

주어진 문맥에서 “연결 끊기”라는 문구의 의미를 알 수 없습니다. 다음 중 하나 일 수 있습니다.

  • birth_date가 같은 경우-먼저 낮은 id
  • birth_date를 사용하여 정렬하는 동안 - 기호를 무시합니다.

댓글

  • 그것이 ' 귀하가 제공 한 첫 번째 옵션 일 수 있습니다.
  • 이것은 영어 질문입니다.
  • 다른 사람들이 언급했듯이 ' 거의 확실하게 첫 번째 해석입니다. 하지만 조언을 드리고 싶습니다. 인터뷰가 직접 진행되거나 ' 연락 할 수있는 쉬운 방법이 있다면 언제든지 문의하세요. 명확히하기 위해 바로 거기에. 어떤 감각을 가진 사람도 여러분을 반대하지 않습니다.

답변

A 타이 브레이크 는 두 플레이어가 같은 점수를 가지고있을 때 누가 승자를 결정하는 추가 플레이입니다.

정렬에서이 표현을 들어 본 적이 없지만 테니스 에서 해당 영역으로 조옮김하면 다른 모든 것이 동일하다는 것을 의미합니다. 누가 먼저인지 결정하기 위해 id에 대한 추가 비교입니다.

연결된 목록에 대해 말씀해 주시겠습니까? 넥타이 가 있기 때문입니다. 링크 또는 연결이기도합니다. 그러나이 의미를 사용하더라도 정렬의 맥락에서 이해할 수있는 유일한 연결은 평등입니다.

댓글

  • 정렬에서 " ties "의 개념은 확실히 SQL에서 키워드를 가질만큼 일반적입니다. " 동점 깨기 "는 전문 용어가 아니지만 고유 한 순위를 보장하기 위해 몇 가지 추가 조치를 취하여 동점을 처리하는 것을 의미합니다. 종종 본질적으로 가짜이거나 무작위적인 단계 (예 : 축구 경기를 결정하기 위해 동전 던지기 또는 I의 순위 데이터 d).
  • @Steve 깨달음을주는 확인에 감사드립니다. 실제로 SQL TOP WITH TIES 는 동일한 값을 나타냅니다. 반면에 C ++는 관계를 매우 다르게 인식합니다. std :: tie 는 튜플로 함께 연결된 요소 그룹입니다. '는 정렬에도 사용되지만 요소 간의 사전 순서를 만드는 데만 사용됩니다.

답변

정렬의 맥락에서 타이 브레이킹은 전체 순서를 확인하는 것입니다.

예제 데이터를 살펴보세요.

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

정확히 두 개의 실제 데이터가 있습니다. 이름과 생년월일이 같은 두 사람이 있으면 어떻게 되나요?

정렬 알고리즘은 어떤 사람이 가는지 결정할 수 없습니다. 첫 번째 또는 본질적으로 동일한 경우에도 복사시 버려야합니다.

목록의 두 개의 개별 사본을 정렬하면 두 개의 다른 순서가 생성 될 수 있으므로 그러면 요소 쌍 (a[0] == b[0] && a[1] == b[1] && ...)이 false가됩니다.

이것이 전체 주문이 중요한 이유입니다.

이제 더 이상 존재하지 않습니다. 구분할 실제 데이터이므로 요소가 항상 동일한 순서로 정렬되도록하려면 어떻게해야할까요? 그는 구성된 데이터를 사용하여 동점을 끊는 것입니다. 완전히 임의적이지만 목록이 스크램블되고 재 지정되는 빈도는 중요하지 않습니다. 항상 요소를 동일한 위치로 정렬하여 각 요소 쌍을 비교하여 비교할 수 있습니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다