728x90
정렬 알고리즘
n개의 숫자가 주어졌을때 이를 오름차순 / 내림차순으로 정렬하는 알고리즘
다양한 알고리즘이 있으며, 알고리즘에 따라 시간 복잡도가 다르다
2. 버블 정렬(bubble sort)
•정렬되지 않은 범위의 맨 앞부터 맨 뒤까지 순차적으로 연속된 인덱스의 값을 비교하여 정한 기준에 의해 정렬하는 방식
- 오름차순으로 정렬할 경우 연속된 인덱스의 값을 비교하여 작은 수가 앞으로, 큰 수가 뒤로 정렬
- 내림차순으로 정렬할 경우 연속된 인덱스의 값을 비교하여 큰 수가 앞으로, 작은 수가 뒤로 정렬
•반복문의 첫 바퀴가 지나면 가장 큰/작은 수가 맨 뒤로 이동하게 된다. (오름차순의 경우 가장 큰 수, 내림차순의 경우 가장 작은 수)
•이중 반복문을 사용하게되며, 바깥의 반복문은 (n - 1)번 반복, 안쪽 반복문은 (n - 바깥 반복문의 반복된 횟수)만큼 반복한다.
•정렬 방식
•시간 복잡도
탐색(비교)는 4, 3, 2, 1 번 실행 되었으므로
n-1, n-2, n-3, n-4 번
-> n-1, n-2, ..., 1 이라 볼수있다.
즉 총 비교 수는 (n-1) + (n-2) + ... + 1
= ( (n-1) * (n - 1 + 1) ) / 2
= ( n * (n - 1) ) / 2
= (n^2 - n) / 2
빅오표기법으로 표기하면
O(n^2) 이 된다.
•공간 복잡도
한개의 배열 [5, 7, 4, 2, 1]만 사용하므로
n개의 원소가 들어간 배열의 경우
O(n) 이 된다.
728x90
'알고리즘' 카테고리의 다른 글
선택 정렬(selection sort) - c 언어 코드(code) (0) | 2019.08.16 |
---|---|
정렬 알고리즘(sorting algorithm) - 삽입 정렬(insertion sort) (0) | 2019.08.10 |
정렬 알고리즘(sorting algorithm) - 선택 정렬(selection sort) (2) | 2019.06.07 |
자료구조 stack c언어 코드 (1) | 2019.03.23 |
링크드 리스트 (linked list) 코드 (0) | 2019.03.07 |