티스토리 뷰

반응형


ㅂㄷㅂㄷ


여러분 선택정렬이 뭐랬죠?

"선택 정렬(selection sort)은 정렬되지 않은 데이터들에 대해 

가장 작은 데이터를 찾아 가장 앞의 데이터와 

교환해나가는 방식이다."


선택정렬이 아직 뭔지 모르신다면 이 글을 읽고오세요.


하지만

인터넷에 selection sort c++이라고 치면

물론!! 제대로 짠 소스코드들도 많지만, 

굉장히 선택정렬의 정의에 어긋한 소스코드가 많다는 것입니다ㅠㅠ


어디라고 말을 할 수는 없지만, 어떤 코드인지 제가 직접 짜서 보여드리자면, 


자, 제대로 정렬이 됐네요?

(저는 그냥 swap를 썼는데, temp변수를 선언해서 해도 됩니다.

오늘 논점은 이것이 아니니 그냥 swap을 쓰겠습니다.)


위 코드가 선택정렬 소스코드일까요?




네. 아니에요

(혹시 또 헷갈리실까봐 말하는 거지만, 버블정렬 코드도 아닙니다.

버블정렬은 인접한 데이터끼리 교환하는 정렬알고리즘이죠?

위 코드는 기준이 데이터를 하나 잡고 그 데이터 이후의 데이터들과 비교하는 코드이므로 버블정렬 코드는 아닙니다.)



위 코드는 전혀 선택정렬의 정의를 따르고있지 않아요.


선택정렬은 주어진 데이터 내에서 가장 작은 데이터 일단 찾아야합니다. 


위 코드는 일단 기준이 데이터보다 작으면 바꾸죠.

굉~~장히 비효율적인 코드입니다.



선택정렬의 코드는 


위 코드가 되겠네요.









반응형