많은 숫자 정렬 방법이 예상되는 1, 2, 3, 10이 아닌 1, 10, 2, 3으로 정렬되는 것보다 눈치 ...습니다. 첫 번째 방법이 필요하며 사용자는 실제로 볼 때마다 좌절합니다. 두 번째 스타일보다 첫 번째 스타일에 대한 합법적 인 사용 사례가 있습니까? 그렇다면 무엇입니까? 그렇지 않다면, 첫 번째 정렬 스타일은 어떻게 생겨 났습니까? 각 정렬 방법의 공식 이름은 무엇입니까?
많은 숫자 정렬 방법이 예상되는 1, 2, 3, 10이 아닌 1, 10, 2, 3으로 정렬되는 것보다 눈치 ...습니다. 첫 번째 방법이 필요하며 사용자는 실제로 볼 때마다 좌절합니다. 두 번째 스타일보다 첫 번째 스타일에 대한 합법적 인 사용 사례가 있습니까? 그렇다면 무엇입니까? 그렇지 않다면, 첫 번째 정렬 스타일은 어떻게 생겨 났습니까? 각 정렬 방법의 공식 이름은 무엇입니까?
답변:
즉 사전 편찬 문자열로 기본적 언어 취급 변수를 의미하며, 문자 단위로 비교하여 정렬 ( "200"
보다 큰 "19999"
때문에 '2'
보다 크다 '1'
)
이 문제를 해결하기 위해
값이 정수로 취급되는지 확인하십시오.
'0'
문자열 앞에 추가 하여 모두 동일한 길이를 갖습니다 (최대 값을 알고있는 경우에만 실행 가능).
그렇기 때문에 사전에 0이 붙은 미디어 파일 (S1E01)에 에피소드 번호가 표시되어 사전 사전 정렬이 문제를 일으키지 않고 프로그램을 알파벳 순서로 재생 / 표시 할 수 있습니다.
또는 문자열의 길이를 먼저 비교하고 (짧은 문자열은 정수가 작은) 사용자 정의 비교기를 만들어 사전이 동일한 경우 사전 식으로 비교하십시오 (leading에 대해주의하십시오 '0'
)
숫자 대신 문자열을 숫자 순으로 정렬하면 결과가 나타납니다.
명령 행 옵션 sort
을 사용 --numeric-sort
하여 숫자 값을 해석하도록 지시 하지 않는 한, 해당 정렬 스타일은 예를 들어 unix 명령 의 기본 동작입니다 .
다른 사람들은 이런 종류의 질문에 대한 답변을 가지고 있지만, 왜 당신이 그것을 보는지에 대한 질문에 답한 사람은 없습니다. 그 답은 그리 흥미롭지 않습니다. 일반적으로 버그입니다. 대부분의 정렬 방법은 기본적으로 하나 또는 다른 것으로 설정되며 프로그래밍은 숫자를 정렬 할 때 기본값을 변경하지 않아도됩니다.