티스토리 뷰
거품정렬에 이어 머리속으로만 이런 방법도 있겠구나...했던 정렬방법이
알고보니 선택정렬이라고 한다.
import java.util.Scanner;//스캐너 호출명령어
//import java.util.*;도 가능
public class chanyurappa {
public static void main(String args[]) {
int A[] = new int[10];//배열생성
Scanner sc = new Scanner(System.in);
for(int i=0; i<A.length; i++)
{
A[i] = sc.nextInt();//배열에 수 입력
}
sc.close();
selectSort(A);//인자 전달, 함수호출
for(int i=0; i<A.length; i++)
{
System.out.print(A[i]+" ");//출력
}
}
static void selectSort(int a[]) {
int temp;
int min;
for(int i=0; i<a.length-1; i++)//0~8까지
{
min = i;
for(int j=i+1; j<a.length; j++)//1~9까지
{
if(a[i]>a[j])//기준점보다 작은값이면
{
min = j;//해당 인덱스번호 저장
}
}//두번째 for문 탈출 후(모든 배열의 수 확인 후)
temp = a[min];//교환
a[min] = a[i];
a[i] = temp;
}
}
}
거품정렬이랑 다를건 없어보이지만 비교방법이 다르기에 올려본다.
거품정렬은 바로 옆의 수와 비교하여 정렬하지만
선택정렬은 한개 기준을 잡아놓고 최소값을 구해놓은 후
기준점이 됬던 수와 자리를 바꾼다.
이를 위해서는 최소값을 구하자마자 자리이동을 하면 안되고
최소값이 되는 index번호를 저장해두었다가
한바퀴를 다 돌고나서(기준점 뒤의 모든 수를 비교하고 나서)
'제일 작은 수' 라는걸 확인하면
index번호로 호출을해서 자리이동을 한다.
그리고 주의할 점이 하나 있는데 본인은 처음에 min이라는 변수를 0으로 초기화 했었다.
그랬더니 자꾸 0부터 비교를 해서 원하는 결과가 나오지 않았다.
min은 기준점(비교 시작점)과 동일하게 잡아야 원하는 결과가 나온다.
이해가 좀 어려울 수도 있지만 알고보면 간단하다.
'Computer Language > JAVA' 카테고리의 다른 글
017-필드,생성자,메소드 (0) | 2018.05.04 |
---|---|
016-배열(Array) (0) | 2018.05.04 |
이클립스 단축키 (0) | 2018.05.04 |
014 - 거품정렬(bubbleSort) (0) | 2018.05.04 |
013 - 메소드 호출(최대값, 최소값) (0) | 2018.05.04 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday