티스토리 뷰

[Java] 선택정렬 (SelectionSort)


SelectionSort.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package org.elukasoul.SelectionSort;
 
import org.elukasoul.sort.ArrayData;
import org.elukasoul.sort.Sort;
 
public class SelectionSort {
    // @Date: 2016.05.31
    // @Developer: 손혁(elukasoul@gmail.com)
    // @프로그램 개요: 임외의 데이터가 무작위로 담겨있는 배열을 오름차순으로 (선택)정렬하는 알고리즘
    public static void main(String[] args) {
 
        Sort sort = new Sort();
        ArrayData arrayData = new ArrayData();
 
        System.out.print("몇 개의 데이터를 입력받을 것인지 입력하세요.");
 
        // 배열 생성
        int[] array = new int[arrayData.setLength()];
 
        System.out.println("정렬할 데이터를 입력하세요.");
 
        // 배열에 데이터 입력
        for (int i = 0; i < array.length; i++) {
            array[i] = arrayData.setData();
        }
 
        // 정렬 전 배열 출력
        System.out.print("정렬 전 Array는 ");
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i] + " ");
        }
        System.out.println("입니다.");
 
        // 선택정렬
        sort.selectionSort(array);
 
        // 정렬 후 배열 출력
        System.out.print("정렬 후 Array는 ");
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i] + " ");
        }
        System.out.println("입니다.");
    }
 
}
 
cs


ArrayData.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package org.elukasoul.sort;
 
import java.util.Scanner;
 
public class ArrayData {
 
    // @Date: 2016.05.29
    // @Developer: 손혁(elukasoul@gmail.com)
    // @프로그램 개요: 배열의 길이와 배열의 데이터를 정의하는 클래스
 
    // 입력을 받기 위해 Scaaner 클래스 사용
    private Scanner input = new Scanner(System.in);
 
    // 배열의 길이를 정의하는 메소드
    public int setLength() {
 
        int arrLength = input.nextInt();
 
        return arrLength;
    }
 
    // 선언된 배열에 데이터를 입력하는 메소드
    public int setData() {
 
        int arrData = (int) (Math.random() * 10);
        // int arrData = input.nextInt();
 
        return arrData;
    }
 
}
 
cs


Sort.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package org.elukasoul.sort;
 
public class Sort {
 
    // @Date: -
    // @Developer: 손혁(elukasoul@gmail.com)
    // @프로그램 개요: 정렬 알고리즘을 정의한 클래스
 
    public int[] selectionSort(int[] array) {
 
        // 정렬 중 자리교환이 일어날 때 사용되는 임시변수
        int temp = 0;
        // 최소값의 index를 저장할 변수
        int minIndex = 0;
 
        for (int i = 0; i < array.length - 1; i++) {
            // 가장 앞 쪽의 데이터를 정렬하기 위해 i를 minIndex에 삽입한다.
            minIndex = i;
            for (int j = i; j < array.length; j++) {
                // 삽입된 minIndex와 비교하는 중 더 작은 값이 나오면 j를 minIndex에 삽입한다.
                if (array[j] < array[minIndex]) {
                    minIndex = j;
                }
            }
            // 가장 앞 쪽의 데이터와 최소값을 자리교환한다.
            temp = array[minIndex];
            array[minIndex] = array[i];
            array[i] = temp;
            // 정렬 후 다음 index부터 반복한다.
        }
 
        return array;
    }
 
}
 
cs



Output

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
몇 개의 데이터를 입력받을 것인지 입력하세요.10
정렬할 데이터를 입력하세요.
6
2
9
1
4
8
9
1
7
3
정렬 전 Array는 6 2 9 1 4 8 9 1 7 3 입니다.
정렬 후 Array는 1 1 2 3 4 6 7 8 9 9 입니다.
 
cs




'Programming > Java' 카테고리의 다른 글

[Java] 정수 세개를 입력받아 가장 큰 수 구하기  (0) 2016.06.04
[Java] 홀수 짝수  (0) 2016.06.03
[Java] 학점 구하기  (1) 2016.06.03
'학습 프로젝트'  (0) 2016.06.02
[Java] 버블정렬(BubbleSort)  (0) 2016.05.29

Recent Comments