예제 배열 {7,9,4,3,1}
1~4회전 결과가 위와 같이 나오게 하시오
package jungbo;
public class T21SelectionSort {
public static void main(String[] args) {
int array[] = {7,9,4,3,1};
int row, col;
int temp;
int cup;
for(row=0;row<=3;row++){
temp = row;
for(col=row+1;col<=4;col++){
if(array[temp]>array[col]){
temp = col;
}
}
cup = array[row];
array[row]=array[temp];
array[temp]=cup;
for(col=0;col<=4;col++){
System.out.printf("%2d", array[col]);
}
System.out.println();
}
}//main end
}
선택정렬
row 선택대상
col 비교대상
<A(5)> 배열 <A(M)>
[row=1,4,1] [row=1,M-1,1]
[S=row]
[col=row+1,5,1] [col=row+1,M,1]
◇A(S) > A(col)
yes [S=col]
no 아무것도안한다
A(row) A(S)를 교환하라
설명
임시 공간(S)을 만들어서
교환이 필요한 경우에 임시 공간(S)에 교환 할 위치를 저장한다.
임시 공간(S)에 들어있는 값과 그 다음값을 계속 비교해나간다.
최종적으로 가장 작은 값이 그 자리에 온다.
자신과 비교해서 작은 문자가 나타날 때마다
계속 교환하는 것에 비해서
아무리 비교할 대상이 많다고 하더라도
교환은 한 번만 일어나기 때문에
성능의 향상을 가져올 수 있음.
'JAVA > 알고리즘 예제' 카테고리의 다른 글
[JAVA] ㄹ자 출력 (1) | 2016.08.31 |
---|---|
[JAVA] 버블 정렬(Bubble Sort) (1) | 2016.08.31 |
[JAVA] 마방진 (1) | 2016.08.31 |
[JAVA] 모래시계 찍기 (1) | 2016.08.30 |
[JAVA] 다이아몬드 찍기 (1) | 2016.08.30 |