본문 바로가기

JAVA/알고리즘 예제

[JAVA] 선택 정렬(Selection Sort)

예제 배열 {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