ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Selection / Bubble / Insertion Sort (Easy)
    알고리즘/Sort 2021. 1. 4. 23:19

    출처(위키피디아/GeeksforGeeks)

    1. Selection Sort(선택 정렬)

    - 주어진 리스중에 최소값을 찾는다.

    - 그 값은 맨 앞에 위치한 값과 교체한다.

    - 맨 처음을 제외한 나머지 리스트를 같은 방법으로 교체한다.

    - Unstable / In-place

    최악 시간복잡도  Θ( n ^2 )
    최선 시간복잡도  Θ( n ^2 )
    평균 시간복잡도  Θ( n ^2 )
    공간 복잡도  Θ( 1 )
    void selectionSort(int arr[], int n){
        int i, j, indexMin, temp;
    
        for(i=0; i<n-1; i++){
            indexMin = i;
            for(j=i+1; j<n; j++){
                if(arr[indexMin] > arr[j])
                    indexMin = j;
            }
            swap(&arr[i], &arr[indexMin]);  
        }
    }

    2. Bubble Sort(거품 정렬)

    - 두 인접한 원소를 비교하는 정렬하는 방법이다.

    - 느리지만 매우 구현이 단순하다.

    - 양방향으로 번갈아 수행하면 칵테일 정렬이 된다.

    - Stable / In-place

    최악 시간복잡도  Θ( n ^2 )
    최선 시간복잡도  Θ( n )
    평균 시간복잡도  Θ( n ^2 )
    공간 복잡도  Θ( 1 )
    void bubbleSort(int arr[], int n){
        int i, j, temp;
    
        for(i=0; i<n-1; i++){
            for(j=0; j<n-i-1; j++){
                if(arr[j] > arr[j+1])
                    swap(&arr[j], &arr[j+1]);  
            }
            
        }
    }
    

     

    3. Insertion Sort(삽입 정렬) 

    - 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여, 자신의 위치를 찾아 삽입함으로써 정렬을 완성하는 알고리즘이다.

    - 배열이 길수록 효율이 떨어진다. 다만, 구현이 간단하다는 장점이 있다.

    - Stable / In-place

    최악 시간복잡도  Θ( n ^2 )
    최선 시간복잡도  Θ( n  )
    평균 시간복잡도  Θ( n ^2 )
    공간 복잡도  Θ( 1 )
    void insertionSort(int arr[], int n){
        int i, j, temp;
    
        for(i=1; i<n; i++){
            temp = arr[i];
            j = i-1;
            
            while(j>=0 && arr[j]>temp){
                arr[j+1] = arr[j];
                arr[j] = temp;
                j = j-1;
            }
        }
    }
    

     

    ※ Stable ↔ Unstable :

       동일 키 입력에 대하여 상대적 순서가 유지될 경우 Stable로 간주

     

    ※ In-place(제자리)   Not in place :

       In-place(제자리) 정렬은 정렬되는 항목 외에 Θ(1)개의 메모리만 필요하며 Θ(logN)개의 추가적인 메모리를 인플레이스로 간주

     

    '알고리즘 > Sort' 카테고리의 다른 글

    Merge / Quick / Heap Sort (Medium)  (0) 2021.01.05

    댓글

Designed by Tistory.