1. Sort

  1. Bubble
    1. 간단한 정렬 알고리즘 중 하나 입니다
    2. 배열의 인접한 숫자를 비교하여 작은 숫자를 맨 앞으로 보내는 방식으로 정렬을 말합니다
    3. 배열의 맨 끝까지 반복하며, 한 번의 반복마다 배열의 맨 앞쪽부터 맨 끝까지 인접한 숫자를 비교하여 작은 숫자를 맨 앞으로 보냅니다
    4. [단점]
      1. 배열의 크기가 작을 때는 효율적이지만, 배열의 크기가 커질수록 효율이 떨어집니다
  2. Selection
    1. 정렬 알고리즘의 한 종류로, 배열의 원소 중 최소값을 찾아 맨 앞으로 보내는 과정을 반복하여 정렬하는 방법입니다
    2. 선택 정렬의 시간 복잡도는 O(n^2)입니다
    3. [구현]
      1. 배열의 첫 번째 원소를 최소값으로 지정합니다
      2. 배열의 두 번째 원소부터 마지막 원소까지를 순회하며, 현재 원소가 최소값보다 작으면 최소값을 현재 원소로 교체합니다
      3. 2번의 과정을 배열의 마지막 원소까지 반복합니다
    4. [단점]
      1. 단순하고 이해하기 쉬운 알고리즘이지만, 시간 복잡도가 O(n^2)이기 때문에 대규모 배열의 정렬에는 적합하지 않습니다
    5. 빅오 표기법
      1. [설명]
        1. 알고리즘의 시간 복잡도를 나타내는 수학적 표기법입니다
        2. 알고리즘의 입력 크기가 커짐에 따라 알고리즘의 실행 시간이 어떻게 증가하는지 나타냅니다
        3. O(n), O(n log n), O(n^2), O(n^3), O(2^n), O(n!) 등과 같은 다양한 표기법으로 나타낼 수 있습니다
      2. [표기법]
        1. O(n)
          1. 입력 크기가 n이 될 때 알고리즘의 실행 시간이 n에 비례하는 경우 입니다
        2. O(n log n)
          1. 입력 크기가 n이 될 때 알고리즘의 실행 시간이 n log n에 비례하는 경우 입니다
        3. O(n^2)
          1. 입력 크기가 n이 될 때 알고리즘의 실행 시간이 n^2에 비례하는 경우 입니다
        4. O(n^3)
          1. 입력 크기가 n이 될 때 알고리즘의 실행 시간이 n^3에 비례하는 경우 입니다
        5. O(2^n)
          1. 입력 크기가 n이 될 때 알고리즘의 실행 시간이 2^n에 비례하는 경우 입니다
        6. O(n!)
          1. 입력 크기가 n이 될 때 알고리즘의 실행 시간이 n!에 비례하는 경우 입니다
  3. Counting
    1. 특정 범위 내의 값을 정렬하는 데 사용되는 정렬 알고리즘 입니다
    2. 값의 범위가 작을 때 효율적입니다
    3. 알고리즘의 효율성을 비교하는 데 사용됩니다
    4. [구현]
      1. 각 값의 빈도를 계산합니다
      2. 빈도를 사용하여 정렬된 배열을 생성합니다
    5. [단점]
      1. 값의 범위가 작을 때 효율적이지만, 값의 범위가 클 경우 효율적이지 않습니다