주문 시퀀스에 의한 정렬로 인해 링크 된 목록과 실질적으로 동일한 배열을 만들 수있는 순서 시퀀스 (정수 특성)가있는 이중 연결 목록을 만들려고합니다.링크 된 목록의 간단한 순서
given: a <-> b <-> c
a.index > b.index
b.index > c.index
이 색인은 효율적으로 임의의 수의 삽입을 처리해야합니다.
이것을 수행하는 알고리즘이 있습니까? 목록이 커지고 인덱스 시퀀스가 압축 된 경우 문제가 발생합니다. 이 상황에서 목록은 빈 공간을 다시 찾기 위해 스캔되어야합니다. 나는 이것이 어떻게 성취되어야하는지 잘 모르겠습니다. 이상적으로 자동 차용 일종의 자동 차용이 빠르거나 드물기 때문입니다.
모든 왼쪽 또는 오른쪽 indecies를 1로 변경하여 삽입 할 공간을 확보하는 간단한 해결책은 O (n)입니다.
대부분의 구현에서 숫자가 0에 가까워 질수록 부동 소수점의 신뢰도가 떨어지는 경향이 있으므로 정수를 사용하는 것을 선호합니다.
왜 왜 링크 된 목록입니까? 왜 [균형 잡힌 나무] (https://en.wikipedia.org/wiki/https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree#Implementations)? Growing/skrinking, O (log (N)) 연산에는 문제가 없습니다. –
"삽입물을 넣을 공간을 만들기 위해 왼쪽 또는 오른쪽 indecies를 모두 1로 변경하는 순진한 해결책은 O (n)입니다." 어떤 이유로 든 "dlinked * paged * solution"을 고집한다면, 모든 페이지에 여유를 분산하는 대신 삽입하려는 페이지를 분할 할 수 있지만 페이지가 채우기 비율에 도달했습니다. –
새 항목이 이중 연결 목록에 어떻게 삽입됩니까? 그들은 머리 또는 꼬리에 삽입됩니까? 아니면 중간에 임의의 위치? 개별 항목에 대한 포인터를 유지하지 않는 한 이중 링크 된 목록의 중간에 항목을 삽입하면 O (n)이 필요하므로 추가 포인터를 유지하는 데 시간이 걸릴 수 있습니다. – wookie919