ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 계수 정렬
    알고리즘/정렬 2021. 12. 25. 00:32
    728x90

     

    계수 정렬: 범위 조건이 있는 경우에 한해 빠른 정렬 알고리즘

     

    크기를 기준으로 개수를 세는 알고리즘이며, 모든 데이터에 한번씩만 접근하면 된다는 점에서 효율적이라 할 수 있음.

     

    그러나, 데이터의 크기가 한정되어 있을 때에 한해서만 사용할 수 있음.

     

    시간 복잡도: O(N)

    앞에서 차례대로 데이터를 하나씩 읽어 주기만하면 되므로 N에 비례하는 시간 복잡도를 가진다.

     

    #include <stdio.h>
    
    int main() {
    	int temp;
    	int count[5]; // 범위 기준 : 1~5
    	int arr[30] = {
    		1, 3, 2, 4, 3, 2, 5, 3, 1, 2,
    		3, 4, 4, 3, 5, 1, 2, 3, 5, 2,
    		3, 1, 4, 3, 5, 1, 2, 1, 1, 1
    	};
    	for(int i = 0; i<5; i++) {
    		count[i] = 0;
    	}
    	for(int i = 0; i<30; i++) {
    		count[arr[i] - 1]++;
    	}
    	
    	for(int i  = 0; i<5; i++) {
    		if(count[i] != 0) {
    			for(int j = 0; j<count[i]; j++) {
    				printf("%d ", i + 1);
    			}
    		}
    	}
    }
    728x90

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

    힙 정렬  (0) 2021.12.25
    병합 정렬  (0) 2021.12.25
    퀵 정렬  (0) 2021.12.25
    삽입 정렬  (0) 2021.12.24
    버블 정렬  (0) 2021.12.24

    댓글

Designed by Tistory.