CS/Algorithm
(알고리즘) 정렬 (2) - 선택정렬
주누
2020. 2. 23. 20:14
선택 정렬이란?
가장 작은 요소부터 선택해 알맞은 위치로 옮겨서 순서대로 정렬하는 알고리즘
해당 배열에서 가장 작은 값 : 1
1과 6을 스위칭
그다음 작은 값 : 3
4와 3을 스위칭
이와 같은 과정을 반복하면 오름차순으로 정렬이 완료된다.
구현
public class SelectionSort {
// static int min = Integer.MAX_VALUE;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("선택정렬");
System.out.println("요솟수 : ");
int nx = sc.nextInt();
int[] x = new int[nx];
for (int i=0 ;i<nx; i++) {
x[i] = sc.nextInt();
}
selectionSort(x, nx);
for (int i=0 ;i<nx; i++) {
System.out.printf("x["+i+"]="+x[i]+ " ");
}
}
private static void selectionSort(int[] array, int length) {
//6 4 8 3 1 9 7
for (int i=0 ; i<length ; i++) {
// int min = Integer.MAX_VALUE;
int minIndex = i;
for (int k=i ; k<length ; k++) {
if (array[k] < array[minIndex])
minIndex= k;
// if (min > array[k]) {
// min = array[k];
// minIndex = k;
// System.out.println("minValue :: "+min);
// System.out.println(minIndex);
// }
}
swap (minIndex, i, array);
}
}
static void swap (int minIndex, int startIndex, int[] array) {
int temp = array[minIndex];
array[minIndex] = array[startIndex];
array[startIndex] = temp;
}
}
Code Link
https://github.com/mike6321/PURE_JAVA/tree/master/Algorithm