티스토리 뷰

정렬 알고리즘(Sorting Algorithm)은 프로그래밍에서 중요한 역할을 합니다. 그렇다면 정렬 알고리즘은 무엇일까요? 프로그램은 사용자로부터 데이터를 받아올때, 일정한 순서가 없이 무작위로 받아오게 됩니다. 따라서 프로그래머는 입력된 데이터를 일정한 규칙으로 정렬할 필요가 있습니다. 따라서 정렬알고리즘이란 사용자로부터 입력받은 데이터를 일정한 조건(오름차순, 내림차순)에 맞게 데이터를 재정렬하는 과정이라고 정의할 수 있습니다.

 정렬 알고리즘이 사용되고 있다는 것은 프로그램을 사용하는 사용자는 알 수 없습니다. 프로그램의 사용자가 너무나 자연스럽게 데이터가 정렬되어 처리되는 과정을 이해하기란 쉽지않습니다. 하지만 프로그램을 개발하는 개발자라면 정렬알고리즘을 반드시 이해하고 사용할 줄 알아야합니다. 정렬 알고리즘에는 여러 종류가 있으나 그 중 개발자가 많이 사용하는 방법은 크게 3가지로 나눌 수 있습니다. 버블 정렬, 선택 정렬, 퀵 정렬이 그 3가지고 이고, 오늘은 그 중 '선택 정렬'에 관해 소개하려고 합니다.

◇ 정렬 알고리즘 - 선택 정렬(Selection Sort)


○ 선택 정렬(Selection Sort)

- 정렬 알고리즘에서 선택 정렬의 사용빈도는 상당히 높습니다. 정렬 알고리즘을 2가지로 나누어보라고 하면 당연히 버블 정렬과 선택 정렬로 나눌 수 있습니다. 선택 정렬에서 가장 중요한 부분은 '기준 값'을 정하는 것입니다. 기준 값을 정하여 입력받은 데이터와 비교하여 데이터의 순서를 재정렬해주는 것입니다.

- 선택 정렬 알고리즘을 구현하기 위해서는 반드시 기준값을 정해주어야 합니다. 일반적으로 선택 알고리즘을 구현할 때 사용자로부터 입력받은 데이터 중 첫번째 데이터를 기준값으로 선택하게 됩니다. 기준값과 다른 비교 데이터들 중 가장 작은 최솟값과 비교하여 비교 데이터가 작을 경우 위치를 바꾸어 주게 됩니다.

- 2번째 루프에서 기준값을 2번째 데이터를 변경하여 줍니다. 이 후 다시 비교 데이터와 기준값을 비교하여 같은 작업을 반복하여 줍니다. 이와같이 루프를 이용하여 기준값과 데이터를 비교하여 데이터를 재배열하여 주는 것이 바로 '선택 정렬'입니다.


 선택 정렬에서 가장 중요한 것은 기준값을 선정하고 기준값과 비교데이터간에 대소관계를 비교하는 것입니다. 이러한 작업을 루프를 통해 기준값을 변경하여 주고, 같은 작업을 반복하는 것이 바로 선택정렬입니다.

 실제로 프로그램을 작성할때, 정렬 알고리즘의 중요성은 매우 높고, 이 중 버블 정렬과 선택 정렬의 사용빈도는 매우 높으므로 프로그래밍을 공부하고 있다면 정렬 알고리즘을 확실히 정리할 필요가 있습니다. 선택 정렬의 구현 코드는 아래의 링크를 통해 확인하실 수 있습니다.

[읽어볼만한 글]

2015/10/27 -  정렬 알고리즘-버블 정렬

2014/04/12 - C언어 정렬알고리즘-버블정렬(코드)

2014/05/09 - C언어 정렬알고리즘-선택정렬(코드)

※공감은 블로거에게 큰힘이 됩니다.

댓글