>웹 프론트엔드 >JS 튜토리얼 >불안정한 JavaScript 정렬이 안정될 수 있나요?

불안정한 JavaScript 정렬이 안정될 수 있나요?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-18 20:43:03566검색

Can a Non-Stable JavaScript Sort Become Stable?

Twist를 사용한 JavaScript의 안정적인 정렬

객체 컬렉션을 정렬하는 것은 프로그래밍의 일반적인 작업이며, 원본을 보존하려면 안정성이 필요한 경우가 많습니다. 동일한 요소의 순서. 그러나 안정성은 사용된 정렬 알고리즘에 내재되어 있지 않을 수 있습니다.

안정적 비안정 정렬 소개

놀랍지만 효과적인 접근 방식은 비안정 정렬을 변환하는 것입니다. 안정적인 기능을 수행합니다. 정렬하기 전에 모든 요소의 위치를 ​​얻습니다. 기본 키와 요소의 원래 위치를 보조 키로 모두 고려하도록 정렬 조건을 수정합니다.

위치를 비교 순위 결정자로 활용하여 최종 정렬 결과의 안정성이 보장됩니다.

JavaScript의 구현

아래 스니펫은 JavaScript의 구현 예를 제공합니다.

<code class="javascript">function stableSort(array, key) {
  const positions = [];

  for (let i = 0; i < array.length; i++) {
    positions[i] = i;
  }

  array.sort((a, b) => {
    const keyComparison = a[key].localeCompare(b[key]);
    return keyComparison || positions[a] - positions[b];
  });
}</code>

이 코드에서 stableSort 함수는 지정된 기준으로 배열을 정렬합니다. 키를 안정적으로 위치 배열은 요소의 초기 위치를 캡처합니다. 정렬 조건은 문자열 비교를 위해 localeCompare에 의존하며 순위 결정으로 위치 비교로 대체됩니다.

이 접근 방식은 동일한 요소에 대한 안정성을 유지하면서 불안정한 정렬 알고리즘을 활용할 수 있는 유연성을 제공합니다.

위 내용은 불안정한 JavaScript 정렬이 안정될 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.