JAVA
day04-과제)선택정렬
code_learner
2021. 12. 26. 23:14
- 선택정렬(Selection Sort)
선택정렬이란 해당 자리를 선택하고, 그 자리에 오는 값을 찾는 정렬이다.
선택정렬은 삽입정렬과 마찬가지로 정렬의 대상이 되는 데이터 외에 추가적인 공간이 필요하지 않기 때문에 '제자리정렬'이기도 하다
- 선택 정렬의 과정(오름차순 기준 설명)
- 주어진 배열 중에 최소값을 찾는다.
- 그 값을 맨 앞에 위치한 값과 교체한다. (pass)
- 맨 처음 위치를 뺀 나머지 배열을 같은 방법으로 교체한다.
- 하나의 원소만 남을 때까지 1~3 과정을 반복한다.
- 선택정렬 구현하기
package homework;
import java.util.Random;
public class SelectionSort {
public static void main(String[] args) {
//======랜덤 숫자 배열생성=========
Random rand = new Random();
int[] data = new int[10];
for (int i = 0; i < data.length; i++) {
//10개 정수 데이터 랜덤으로 생성
data[i]=rand.nextInt(10)+1;
}
System.out.print("[");
for(int v:data) {
System.out.print(v+" ");
}
System.out.println("]");
//======선택정렬 알고리즘=========
for (int i = 0; i < data.length-1; i++) {
//마지막 자리는 자동으로 확정되므로 data.length-1만큼 반복
int indexMin=i;//자리를 선택할 변수
for (int j = i+1; j < data.length; j++) {
//확정된 자리를 제외한 나머지 숫자중 가장 작은 숫자를 찾기위한 반복
if(data[j]<data[indexMin]) {
indexMin=j;
//오름차순이므로 현재 선택한 자리에 있는 값보다 data[j]의 값이 작다면, 위치(index)를 갱신.
}
}
//두번째 반복문이 끝난 후 i자리에 있는 숫자와 indexMin자리에 있는 숫자를 교환
int tmp = data[indexMin];
data[indexMin] = data[i];
data[i] = tmp;
}
//======선택 정렬후 배열=========
System.out.print("[");
for(int v:data) {
System.out.print(v+" ");
}
System.out.println("]");
}
}
출처: https://devuna.tistory.com/28 [튜나 개발일기]