최종 사용자가 원하는 순서로 구성 할 수있는 여러 항목이 있습니다. 항목 세트는 순서가 없지만 각 항목에는 수정할 수있는 정렬 키가 있습니다.
첫 번째 항목, 마지막 항목 또는 두 항목 사이에 추가되거나 이동 된 항목에 대해 새 정렬 키를 생성 할 수있는 알고리즘을 찾고 있습니다. 이동하는 항목의 정렬 키만 수정하기를 희망합니다.
알고리즘 예는 각 정렬 키를 부동 소수점 숫자로 만들고 두 항목 사이에 항목을 배치 할 때 정렬 키를 평균으로 설정하는 것입니다. 항목을 처음 또는 마지막에 배치하면 가장 바깥쪽에 +1이 사용됩니다.
여기서 문제는 부동 소수점 정밀도가 정렬에 실패 할 수 있다는 것입니다. 소수를 나타 내기 위해 두 개의 정수를 사용하면 마찬가지로 숫자가 너무 커져서 일반 숫자 유형으로 정확하게 표현할 수 없습니다 (예 : JSON으로 전송할 때). BigInts를 사용하고 싶지 않습니다.
예를 들어, 이러한 단점의 영향을받지 않는 문자열을 사용하는 것과 같이 작동하는 적절한 알고리즘이 있습니까?
우리는 많은 수의 움직임을 지원하지는 않지만 위에서 설명한 알고리즘은 약 50 움직임 후 배정 밀도 부동 소수점 수에서 실패 할 수 있습니다.
A, B, C
- A, AA, B, C
- A, AA, AB, B, C
- A, AA, AAA, AAB, AAC, AB, AC, B, C
. 물론, 줄이 너무 빨리 자라지 않도록 할 수 있도록 글자 간격을 넓히고 싶을 수도 있습니다.