배열 정렬 기술은 데이터를 효율적으로 구성하고 조작할 수 있으므로 프로그래밍 세계에서 매우 중요합니다. 신뢰할 수 있는 정렬 알고리즘을 구현하는 경우 삽입 정렬은 다양하고 효율적인 선택이 됩니다. 이 기사에서는 JavaScript의 복잡한 세계를 탐구하고 숫자 배열을 오름차순으로 정렬하기 위해 삽입 정렬을 구현하는 프로세스를 살펴봅니다. 알고리즘의 기본 메커니즘을 이해하고 JavaScript의 기능을 활용함으로써 개발자는 숫자 데이터를 효율적으로 정렬하고 구성할 수 있는 잠재력을 발휘하여 애플리케이션 성능과 유용성을 향상시킬 수 있습니다.
문제 설명
현재 과제에는 숫자 배열을 오름차순으로 정렬하기 위해 JavaScript를 사용하여 삽입 정렬 알고리즘을 구현하는 작업이 포함됩니다. 주요 목표는 주어진 배열의 요소를 지능적으로 재배열할 수 있는 프로그램을 설계하여 각 후속 요소가 숫자 값을 기반으로 이전 요소를 기준으로 올바른 위치에 배치되도록 하는 것입니다. 예를 들어 배열을 제공한다고 가정해 보겠습니다
으아악
삽입 정렬 알고리즘을 실행한 후 예상되는 결과는 다음과 같이 증가하는 순서를 따르는 배열이 됩니다.
으아악
방법
이 기사에서는 JavaScript에서 위의 문제를 해결하는 다양한 방법을 살펴보겠습니다. -
- 기본 삽입 정렬
- 이진 삽입 정렬
- 재귀 삽입 정렬
방법 1: 기본 삽입 정렬
기본 삽입 정렬 알고리즘은 배열 내에서 정렬된 하위 배열을 유지합니다. 두 번째 요소부터 시작하여 각 요소는 하위 배열의 이전 요소와 비교되어 더 작은 경우 오른쪽으로 이동됩니다. 이 프로세스는 올바른 위치를 찾고 요소가 삽입될 때까지 계속됩니다. 이 프로세스는 모든 요소에 대해 반복되어 완전히 정렬된 배열이 생성됩니다.
예
insertionSort 함수는 배열 arr을 입력으로 사용하고 삽입 정렬 알고리즘을 사용하여 정렬된 배열을 반환합니다. 두 번째 요소부터 반복하여 현재 변수에 저장합니다. while 루프는 현재 요소를 정렬된 하위 배열의 이전 요소와 비교하여 더 큰 요소를 오른쪽으로 이동합니다. 배열의 시작 부분에 도달하거나 더 작은 요소를 찾을 때까지 루프가 계속됩니다. 그러면 현재 요소가 정렬된 하위 배열의 올바른 위치에 삽입됩니다. 이 프로세스는 모든 요소에 대해 반복되어 정렬된 배열이 생성됩니다.
으아악
출력
다음은 콘솔 출력입니다 -
으아악
방법 2: 바이너리 삽입 정렬
이진 삽입 정렬 알고리즘은 정렬된 하위 배열에서 이진 검색을 활용하여 각 요소의 올바른 위치를 결정함으로써 기본 삽입 정렬의 효율성을 향상시킵니다. 선형 검색 대신 이진 검색은 현재 요소를 하위 배열의 중간 요소와 비교하고 이에 따라 검색 범위를 조정하여 수행됩니다. 삽입 지점이 결정되면 요소를 오른쪽으로 이동하여 공간을 확보하고 현재 요소가 삽입됩니다. 이 프로세스는 모든 요소에 대해 반복되어 완전히 정렬된 배열이 생성됩니다.
예
binaryInsertionSort 함수는 배열 arr을 가져와 이진 삽입 정렬 알고리즘을 사용하여 정렬된 배열을 반환합니다. 첫 번째 요소가 정렬되었다고 가정하고 두 번째 요소부터 반복합니다. 현재 요소는 현재 변수에 저장됩니다. 알고리즘은 정렬된 하위 배열에서 이진 검색을 수행하여 현재 요소를 중간 요소와 비교하고 검색 범위를 조정함으로써 현재 요소의 올바른 위치를 찾습니다. 위치를 찾으면 알고리즘은 요소를 오른쪽으로 이동하고 현재 요소를 올바른 위치에 삽입합니다. 이 프로세스는 모든 요소에 대해 반복되어 정렬된 배열이 생성됩니다.
으아악
출력
다음은 콘솔 출력입니다 -
으아악
방법 3: 재귀 삽입 정렬
재귀 삽입 정렬 알고리즘은 재귀를 사용하여 배열을 정렬하는 삽입 정렬의 재귀 버전입니다. 크기가 1 이하인 하위 배열의 경우 이미 정렬된 것으로 간주됩니다. 더 큰 하위 배열의 경우 마지막 요소 없이 하위 배열을 정렬하기 위해 자신을 재귀적으로 호출합니다. 재귀 호출이 반환되고 하위 배열이 정렬된 후 알고리즘은 마지막 요소를 정렬된 하위 배열의 올바른 위치에 배치합니다. 이는 마지막 요소를 정렬된 하위 배열의 요소와 비교하고 필요한 경우 오른쪽으로 이동함으로써 달성됩니다. 모든 요소가 올바른 위치에 삽입되어 완전히 정렬된 배열이 생성될 때까지 이 프로세스를 반복합니다.
예
recursiveInsertionSort 함수는 삽입 정렬 알고리즘을 입력 배열에 재귀적으로 적용합니다. 배열이 정렬되어 있는지 확인하고 정렬되어 있으면 반환합니다. 그렇지 않으면 크기 n - 1의 하위 배열에서 자신을 재귀적으로 호출합니다. 재귀적으로 호출된 후 함수는 while 루프를 사용하여 마지막 요소를 정렬된 하위 배열의 요소와 비교합니다. 요소가 더 크면 오른쪽으로 이동됩니다. 이 프로세스는 루프가 배열의 시작 부분에 도달하거나 더 작은 요소가 발견될 때까지 계속됩니다. 마지막으로 마지막 요소가 올바른 위치에 삽입됩니다. 이 프로세스는 모든 요소에 대해 반복되어 정렬된 배열이 생성됩니다.
으아악
출력
다음은 콘솔 출력입니다 -
[ 1, 2, 4, 7, 9 ]
로그인 후 복사
结论
最终,使用 JavaScript 实现插入排序算法以升序排列数字数组,对于寻求熟练排序方法的开发人员来说是一个精明的选择。通过迭代地将元素放置在适当的位置,该算法展示了一种组织数值数据的敏锐方法。虽然插入排序可能不像其他排序技术那样广受好评,但它的效率和简单性使其在某些情况下成为非常宝贵的工具。在 JavaScript 中使用此算法使开发人员能够在其编码库中使用鲜为人知但功能强大的工具,从而生成精简且有序的数组。总之,利用 JavaScript 中插入排序算法的强大功能,对于那些在数组排序中寻求精确性和优雅性的人来说,是一种不切实际的努力。
위 내용은 숫자 배열을 오름차순으로 정렬하려면 JavaScript를 사용하여 삽입 정렬을 구현하세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!