ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 버블 정렬
    알고리즘/정렬 2021. 12. 24. 23:47
    728x90

     

    버블 정렬: 옆에 있는 값과 비교해서 작은 값을 앞으로 보내기

    사이클이 돌때마다 가장 큰 값이 맨뒤로 이동하게 된다.

    Ex)

         1 10 5 8 7 6 4 3 2 9

         1 5 8 7 6 4 3 2 9 10

         1 5 7 6 4 3 2 8 9 10

          ~

         1 2 3 4 5 6 7 8 9 10

     

    시간 복잡도 : O(N^2)

     

    구현은 쉬우나 가장 비효율적인 정렬 알고리즘.

     

    실제로 선택정렬과 시간 복잡도는 같으나 수행 시간이 더 오래걸리는 이유

    선택 정렬은 최솟값을 선택하여 마지막에만 스왑을 하지만 버블 정렬의 경우 비교 연산과 스왑을 사이클마다 수행하므로 연산 횟수가 사실상 훨씬 더 많아진다.

     

    #include <stdio.h>
    
    int main()
    {
    	int i, j, temp;
    	int array[10] = {1, 10, 5, 8, 7, 6, 4, 3, 2, 9};
    	for(i=0; i<10; i++)
    	{
    		for(j=0; j<9-i; j++) 
    		{ // 큰 값이 뒤로 이동하면서 집합의 크기가 하나씩 감소되므로 9 - i 
    			if(array[j]>array[j+1])
    			{
    				temp = array[j];
    				array[j]= array[j+1];
    				array[j+1] = temp;
    			}
    		}
    	}
    	for(i=0; i<10; i++)
    	{
    		printf("%d ",array[i]);
    	}
    	
    	return 0;
    }
    728x90

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

    힙 정렬  (0) 2021.12.25
    병합 정렬  (0) 2021.12.25
    퀵 정렬  (0) 2021.12.25
    삽입 정렬  (0) 2021.12.24
    선택 정렬  (0) 2021.12.24

    댓글

Designed by Tistory.