#include <stdio.h>

void bubble(int a[], int len){
int i;
int j;
int temp;

for (i = 0; i < len - 1; i++){
for (j = 0; j<(len - i) - 1; j++){
if (a[j] > a[j + 1]){
temp = a[j];
a[j] = a[j + 1];
a[j+1] = temp;
}
}
}
}

int main(){
int a[] = { 3, 2, 4, 1 };
int i;
bubble(a, sizeof(a) / sizeof(int));

for (i = 0; i < 4; i++){
printf("%d ", a[i]);
}
return 0;
}

- 버블 소트의 핵심은 i와 j의 변형이다.
3241이 정렬되는 과정

i j
0 0 [32]41 -> 2341
0 1 2[34]1 -> 2341
0 2 23[41] -> 2314
1 0 [23]14 -> 2314
1 1 2[31]4 -> 2134
2 0 [21]34 -> 1234
배열의 길이 len = 4

i는 0부터 2까지 순차적으로 증가하며 j값을 줄여준다.
j가 i=1 비교일때 3번, i=2 비교일때 2번, i=3 비교일때 1번씩 줄어든다.
고로 비교횟수는 j이고 j는 총 3회 실시하므로 i는 3이된다.
시간 복잡도 - O(n^2)

'자료구조' 카테고리의 다른 글

[자료구조] 링크드 리스트의 이해  (0) 2019.12.12
[자료구조] 배열로 된 연결 리스트  (0) 2019.12.12
[자료구조] 선택정렬  (0) 2019.12.07
[자료구조] 이진탐색  (0) 2019.12.07
[자료구조] 순차탐색  (0) 2019.12.02
블로그 이미지

ryancha9

https://blog.naver.com/7246lsy

,