정렬이란 항목의 집합을 특정한 순서대로 맞추는 것으로 일반적으로 오름차순이나 내림차순으로 나열 하는 것으로 정렬이란 결국 레코드들을 키 값의 순서로 재배열 하는 것.
1) 선택정렬 :
배열에서 찾은 큰 값을 오른쪽으로 보내는 것을 말한다.
1회전에서 가장 큰 값을 가장 오른쪽으로 보내기에, 가장 큰 값은 오른쪽 끝에 자리를 잡을 수 있다.
2회전에서 맨 오른쪽 값 제외 가장 큰 값을 찾아 오른쪽 끝에서 두 번째로 보내기에, 두번째 큰 값 또한 자리를 잡을 수 있다.
맨 오른쪽 부터 큰 값을 채워나가는 일을 맨 앞의 값까지 진행하면 정렬이 끝남을 알 수 있다.
이를 JAVA 코드로 한번 만들어보도록 하자.
public class Solution02 {
public static void main(String[] args){
int[] a = {41,31,48,97,9,65,27,29,13,15}; //정렬하고 싶은 배열
for(int i=0;i<a.length;i++) //회전 수 만큼의 반복
{
int max = 0; // 최대값 저장 변수
int maxIdx = 0; // 배열 최대값의 위치를 담는 변수
for(int j=0;j<=a.length - 1 - i;j++) // 각 회전마다 큰 값을 찾는 반복
{ // 회전마다 맨 끝 값을 채워나가기에 맨 끝까지 비교할 이유가 없음.
if(a[j] > max){ // 최대값과 배열값 비교
max = a[j]; // 배열값이 최대값보다 크면 최대값을 바꿔준다.
maxIdx = j; // 최대값이 들어있는 인덱스를 저장.
}
}
int tmp = a[a.length - 1 - i]; // 회전 끝나면 각 회전에서 끝 값과
a[a.length - 1 - i] = max; // 현재 최대값을 바꿔준다.
a[maxIdx] = tmp;
}
System.out.println(Arrays.toString(a));
}
}