2024-7-9 네이버 클라우드
Selection Sort
선택 정렬
현재 위치에 들어갈 데이터를 찾아 선택하는 알고리즘.
데이터를 비교하며 찾기 때문에 비교 정렬이다.
서로 교환하는 과정에서 임수 변수가 필요하다. (ex. 변수 temp)
[ 방법 ]
1. 리스트에서 최솟값을 찾는다.
2. 최솟값을 맨 앞자리의 값과 교환한다.
3. 맨 앞을 제외한 나머지 값들 중 최솟값을 찾아 위에 방법을 반복한다.
int temp; // 임시 변수
for(int i=0; i<ar.length-1; i++) {
for(int j=i+1; j<ar.length; j++) {
if(ar[i] > ar[j]) {
temp = ar[i]; // 임시 변수에 저장
ar[i] = ar[j]; // 원래 값 버리고 다른 값 넣기
ar[j] = temp; // 임시 변수 값 넣기
}
}
}
Bubble Sort
거품 정렬
정렬 알고리즘.
두개의 인접한 데이터를 비교하는 비교 정렬이다.
서로 교환하는 과정에서 임수 변수가 필요하다. (ex. 변수 temp)
[ 방법 ]
1. 앞에서부터 현재 배열값과 바로 다음 배열값을 비교한다.
2. 현재 배열값이 다음 배열값보다 크면 배열값을 교환한다.
3. 다음 배열값으로 이동하며 해당 배열값과 다음 배열값을 비교한다.
4. 위에 방법을 반복한다.
int temp;
for(int i=0; i<ar.length-1; i++) {
for(int j=0; j<ar.length-1-i; j++) {
if(ar[j]>ar[j+1]) {
temp = ar[j];
ar[j] = ar[j+1];
ar[j+1] = temp;
}
}
}
i=0 일때, | i=1 일때, | i=2 일때, | i=3 일때, |
j j+1 ar[0] >ar[1] ar[1] >ar[2] ar[2] >ar[3] ar[3] >ar[4] |
ar[0] >ar[1] ar[1] >ar[2] ar[2] >ar[3] |
ar[0] >ar[1] ar[1] >ar[2] |
ar[0] >ar[1] |
출력되는 값들의 규칙을 생각해보면,
i=0 일때, j=0; j<4; j++
i=1 일때, j=0; j<3; j++
i=2 일때, j=0; j<2; j++
i=3 일때, j=0; j<1; j++
으로 4에서 i를 빼면 j를 구할 수 있다.
따라서, ar.length-1(4)에 i를 빼주어 다중 for문에 안쪽 for문 범위로 지정한다.
j < ar.length-1-i
인접한 두 데이터를 비교하는 것이기 때문에
if(ar[j]>ar[j+1]) { // 인접한 데이터의 큰값을 비교하고
temp = ar[j]; // 큰값일 경우 두 데이터를 교환한다.
ar[j] = ar[j+1];
ar[j+1] = temp;
}
'Java' 카테고리의 다른 글
Java, Lotto 프로그램 - 자동 번호(중복된 값 제외, 오름차순, 줄바꿈) (1) | 2024.07.10 |
---|---|
Java, 기본 Array(배열)과 Object(최상위 클래스) (1) | 2024.07.10 |
Java, 배열 Max(최댓값), Min(최솟값) 구하기 (0) | 2024.07.09 |
Java, charAt() 함수 - 특정 문자 추출하기 / String args() - Command line arguments값 전달하기(arguments) (0) | 2024.07.09 |
Java, Array 배열이란? (1차원 배열 - 배열 크기 .length, 홀수, 짝수, 오름차순 .sort, 확장 for문 ) (0) | 2024.07.09 |