둘다비교연산은 O(n^2) 이고
데이터이동연산은
선택정렬 : O(n)
버블정렬 : O(n^2) // 최악의 상황 기준
으로 선택정렬이 훨씬 좋잖음?
내기억으로는 최악의상황을 가정하고 비교해야한다고 알고있는데
그렇다면 선택정렬이 버블정렬보다 좋은거지않음?
근데..책에서는
"최악의 경우를 놓고 보면 버블정렬보다 선택정렬에 좋은 성능을 기대할 수 있겠지만, 버블정렬은
최선의 경우에 단 한번의 데이터 이동도 발생하지 않는다는 점과, 실제로 데이터들이 늘 최악의 상황으로 배치되지 안흔다는 사실을 감안하면
이 둘의 우열을 가리는 것은 무의미하다고 할 수 있다."
라고써있거든;;;;
그냥 단순히 생각해보기에 어떠한 같은케이스일지라도
가령 양쪽다 최선 최악의 모든케이스 똑같은 경우를 비교할때
어느경우라도 선택정렬이 버블정렬보다 데이터이동이 적거나 같을수밖에 없지않나???
그렇다면 선택정렬이 훨씬 우위에 있는 것 아님?
저 문구를 윤성우 자료구조에서 본듯한 착각이..
ㄴ 그책입니다
윤성우자료구조 앞에서 빅오 개념설명하면서 연산의 우월성 비교할때 최악의경우를 기준으로 생각하라 해놓고 10단원와서 정렬연산 비교하는데 저렇게 말하길래;;
최악은 둘 다 n^2이고..
공부열심히하시네영 굿굿
평균적으론 비슷하다는거지
비교연산은 둘다 n^2인데 데이터 이동의경우는 선택정렬이 O(n)으로 우위에있지않냐는얘기임.
왜냐하면 데이터 이동연산이 선택정렬은 바깥for문이고 버블소트는 안쪽for문에서 돌기때문에... 전자는 최악에 3(n-1)로 O(n)이니가
그렇진 않은 것 같은뎅... 대략 놓고 보면 비슷할겨
그놈이 그놈인듯 책대로 비교하기가 쉽지 않네... 다만 버블은 베스트 케이스가 O(n)임. 아마도 선택정렬이 1회 스왑이기 때문에 데이터 이동이 작아서 빠르지 않냐는 이야기 같은데 min 찾는 비용이 높기 때문에 결국 버블과 비슷할 듯 ㄱ-;