정렬 알고리즘을 선택하세요!

선택 정렬

선택 정렬(selectSort)이란?

선택 정렬은 배열을 정렬된 영역과 정렬되지 않은 영역으로 나누고 정렬된 영역은 왼쪽에, 정렬되지 않은 영역은 오른쪽에 배치됩니다. 먼저 정렬되지 않은 영역에서 가장 작은 요소를 찾아 정렬된 영역의 시작 부분에 저장한 다음 계속해서 나머지 정렬되지 않은 영역에서 가장 작은 요소를 찾은 다음 정렬된 영역의 끝에 놓습니다. 정렬되지 않은 영역에 정렬할 요소가 없을 때까지 계속됩니다.

알고리즘 단계

  1. 먼저 배열에서 가장 작은 요소를 찾습니다.
  2. 현재 최소 요소를 배열의 첫 번째 위치에 넣습니다.
  3. 배열에서 가장 작은 요소 찾기(방금 찾은 가장 작은 요소 제외)
  4. 현재 가장 작은 요소를 배열의 두 번째 위치에 넣습니다.
  5. 유추하여 n - 1 라운드 실행
  6. 완전한 정렬

애니메이션 데모 링크

https://visualgo.net/zh/sorting

기본 케이스

  • 시간 복잡도: O(n^2)
  • 공간 복잡도: O(1)
Array.prototype.selectSort = function () {
    
    
    for (let i = 0; i < this.length - 1; i++) {
    
    
        let indexMin = i

        for (let j = i; j < this.length; j++) {
    
    
            if (this[j] < this[indexMin]) {
    
    
                indexMin = j
            }
        }

        if (indexMin !== i) {
    
    
            const temp = this[i]
            this[i] = this[indexMin]
            this[indexMin] = temp
        }
    }
}

const arr = [5, 4, 3, 2, 1]

arr.selectSort() // [1, 2, 3, 4, 5]

두 개의 중첩 루프가 있기 때문에 시간 복잡도는 O(n^2)이고, 선형적으로 증가하는 데이터 구조가 사용되지 않기 때문에 시간 복잡도는 O(1)입니다.

원래 링크: 야채 정원 프런트 엔드

Supongo que te gusta

Origin blog.csdn.net/qq2603375880/article/details/131540257
Recomendado
Clasificación