[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 |