728x90
선택정렬이란,
배열에서 가장 큰 숫자를 맨뒤로 보내고
맨뒤를 제외한 나머지 숫자에서 다시 가장 큰 숫자를 찾아 그 맨뒤로 보낸다.
이것을 배열만큼 반복하여 정렬하는 방법이다.
정렬되지 않은 것 중에서의 맨뒤인덱스 l이다.
max에 최대값을 담고 maxI에는 최대값의 인덱스를 담아
이것을 arr[l]과 바꾸어 맨뒤와 최대값의 자리를 바꾼다.
그럼 맨뒤는 정렬이 완료된 상태이므로 l--;을 빼주어
그것을 제외한 배열중에서 다시 최대값을 찾아 정렬을 한다.
public class SelectionSort {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = {9,4,3,1,6,10,2,8};
int[] newArr = null;
newArr = sort(arr);
for(int data : newArr) {
System.out.print(data + " ");
}
}
public static int[] sort(int[] arr) {
int max = 0;
int maxI = 0;
int l = arr.length - 1;
for(int i=0; i<arr.length; i++) {
for(int j=0; j<l+1; j++) {
if(arr[j] > max) {
max = arr[j];
maxI = j;
}
}
arr[maxI] = arr[l];
arr[l] = max;
l--;
max = 0;
}
return arr;
}
}
'programming > java' 카테고리의 다른 글
[java] JDBC (0) | 2021.01.05 |
---|---|
[java] 자료구조 스택 코드 구현 (0) | 2021.01.05 |
[java] Cipher암호화하여 문자열 출력하기 (0) | 2021.01.01 |
[java] split, trim (0) | 2021.01.01 |
[java] string배열 순서대로 글자만 역순 출력 (0) | 2021.01.01 |
댓글