algoalgo-world
algoalgo-world/sort/selection-sort
sort/selection-sort

선택 정렬

최선
O(n^2)
평균
O(n^2)
최악
O(n^2)
공간
O(1)
안정성
불안정
방식
비교 기반

언어를 고르면 코드가 열린다

def selection_sort(a):
    n = len(a)
    for i in range(n - 1):
        least = i
        for j in range(i + 1, n):
            if a[j] < a[least]:
                least = j
        if least != i:
            a[i], a[least] = a[least], a[i]
function selectionSort(a) {
  for (let i = 0; i < a.length - 1; i++) {
    let least = i;
    for (let j = i + 1; j < a.length; j++) {
      if (a[j] < a[least]) least = j;
    }
    if (least !== i) [a[i], a[least]] = [a[least], a[i]];
  }
}
static void swap(int a[], int i, int j) {
    int t = a[i];
    a[i] = a[j];
    a[j] = t;
}

void selection_sort(int a[], int n) {
    for (int i = 0; i < n - 1; i++) {
        int least = i;
        for (int j = i + 1; j < n; j++) {
            if (a[j] < a[least]) least = j;
        }
        if (least != i) swap(a, i, least);
    }
}
void selection_sort(std::vector<int>& a) {
    for (size_t i = 0; i + 1 < a.size(); i++) {
        size_t least = i;
        for (size_t j = i + 1; j < a.size(); j++) {
            if (a[j] < a[least]) least = j;
        }
        if (least != i) std::swap(a[i], a[least]);
    }
}
static void SelectionSort(int[] a) {
    for (int i = 0; i < a.Length - 1; i++) {
        int least = i;
        for (int j = i + 1; j < a.Length; j++) {
            if (a[j] < a[least]) least = j;
        }
        if (least != i) (a[i], a[least]) = (a[least], a[i]);
    }
}
static void swap(int[] a, int i, int j) {
    int t = a[i];
    a[i] = a[j];
    a[j] = t;
}

static void selectionSort(int[] a) {
    for (int i = 0; i < a.length - 1; i++) {
        int least = i;
        for (int j = i + 1; j < a.length; j++) {
            if (a[j] < a[least]) least = j;
        }
        if (least != i) swap(a, i, least);
    }
}
돌려 보고 코드도 본다