algoalgo-world
algoalgo-world/sort/stalin-sort
sort/stalin-sort

스탈린 정렬

최선
O(n)
평균
O(n)
최악
O(n)
공간
O(1)
안정성
해당 없음
방식
비교 기반

지운 값은 안 돌아온다. 남은 것만 순서가 맞는다

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

def stalin_sort(values):
    kept = []
    for value in values:
        if not kept or value >= kept[-1]:
            kept.append(value)
    return kept
function stalinSort(values) {
  const kept = [];
  for (const value of values) {
    if (kept.length === 0 || value >= kept[kept.length - 1]) kept.push(value);
  }
  return kept;
}
int stalin_sort(int a[], int n) {
    if (n == 0) return 0;
    int kept = 1;
    for (int i = 1; i < n; i++) {
        if (a[i] >= a[kept - 1]) a[kept++] = a[i];
    }
    return kept;
}
std::vector<int> stalin_sort(const std::vector<int>& values) {
    std::vector<int> kept;
    for (int value : values) {
        if (kept.empty() || value >= kept.back()) kept.push_back(value);
    }
    return kept;
}
static List<int> StalinSort(int[] values) {
    var kept = new List<int>();
    foreach (int value in values) {
        if (kept.Count == 0 || value >= kept[kept.Count - 1]) kept.Add(value);
    }
    return kept;
}
static List<Integer> stalinSort(int[] values) {
    List<Integer> kept = new ArrayList<>();
    for (int value : values) {
        if (!kept.isEmpty() && value < kept.get(kept.size() - 1)) continue;
        kept.add(value);
    }
    return kept;
}
돌려 보고 코드도 본다