프로그래밍/자료구조와 알고리즘

버블 정렬, 선택 정렬, 삽입 정렬

우대비 2022. 8. 28. 10:04
반응형

버블 정렬 =

0 index부터 마지막 index까지 오른쪽 index 비교 오른쪽 값보다 크면 위치 교환

0 index부터 마지막 index까지 비교하는걸 무한히 반복하는데

만약 사이클 동안 위치 변경이 일어나지 않았으면 정렬 종료

 

 

선택 정렬 =

0 index부터 마지막 index까지 돌면서 찾은 가장 작은 수를 0 index 자리를 바꿈

    그 다음 1 index부터 마지막 index까지 돌면서 찾은 가장 작은 수를 1 index 자리를 바꿈

    그 다음 2 index부터 마지막 index까지 돌면서 찾은 가장 작은 수를 2 index 자리를 바꿈

    그 다음 3 index부터 마지막 index까지 돌면서 찾은 가장 작은 수를 3 index 자리를 바꿈

....

....

....

반복....

 

 

 

삽입 정렬 =

1 index부터 시작해서 왼쪽 (0 index) 비교후 현재 index 작으면 자리를 바꿈

 

    다음 2 index 넘어와서 바로 왼쪽 (1 index) 비교후 현재 index 작으면 자리를 바꿈

    만약 자리를 바꾸지 않았으면 다음 사이클로, 지리를 바꿨다면 바꾼 위치에서 왼쪽값(0 index) 한번 비교

 

    다음 3 index 넘어와서 바로 왼쪽 (2 index) 비교후 현재 index 작으면 자리를 바꿈

    만약 자리를 바꾸지 않았으면 다음 사이클로, 자리를 바꿨다면 바꾼 위치에서 왼쪽값(1 index) 한번 비교

    만약 자리를 바꾸지 않았으면 다음 사이클로, 지리를 바꿨다면 바꾼 위치에서 왼쪽값(0 index) 한번 비교

 

    다음 4 index 넘어와서 바로 왼쪽 (3 index) 비교후 현재 index 작으면 자리를 바꿈

    만약 자리를 바꾸지 않았으면 다음 사이클로, 자리를 바꿨다면 바꾼 위치에서 왼쪽값(2 index) 한번 비교

    만약 자리를 바꾸지 않았으면 다음 사이클로, 자리를 바꿨다면 바꾼 위치에서 왼쪽값(1 index) 한번 비교

    만약 자리를 바꾸지 않았으면 다음 사이클로, 자리를 바꿨다면 바꾼 위치에서 왼쪽값(0 index) 한번 비교

 

    다음 5 index 넘어와서 바로 왼쪽 (4 index) 비교후 현재 index 작으면 자리를 바꿈

    만약 자리를 바꾸지 않았으면 다음 사이클로, 자리를 바꿨다면 바꾼 위치에서 왼쪽값(3 index) 한번 비교

    만약 자리를 바꾸지 않았으면 다음 사이클로, 자리를 바꿨다면 바꾼 위치에서 왼쪽값(2 index) 한번 비교

    만약 자리를 바꾸지 않았으면 다음 사이클로, 자리를 바꿨다면 바꾼 위치에서 왼쪽값(1 index) 한번 비교

    만약 자리를 바꾸지 않았으면 다음 사이클로, 자리를 바꿨다면 바꾼 위치에서 왼쪽값(0 index) 한번 비교

….

….

….

….

….

반복....

 

 

 

 

버블 ,선택, 삽입 모두 평균 시간복잡도는 O(n^2)

하지만 삽입 정렬은 최고 시간복잡의 경우O(n) 나옴

 

결국 비슷비슷 놈들이지만 빨을 정해보자면 삽입 > 선택 > 버블버블버블팝 버블버블 팝팝

반응형
LIST

'프로그래밍 > 자료구조와 알고리즘' 카테고리의 다른 글

다익스트라(Dijkstra) - O(E * logE)  (0) 2022.12.21
다익스트라(Dijkstra) - O(n^2)  (0) 2022.12.19
크루스칼 알고리즘과 유니온 파인드  (0) 2022.11.28
퀵정렬  (0) 2022.11.27
stack  (0) 2022.11.13