개념)
1. 배열의 앞에서 부터 가장 작은 수를 찾아낸다.
2. 배열의 현재 앞의 값보다 뒤에 작은 값이 있다면 두 수의 위치를 변경한다.
정렬 Code)
public static int[] selectionSort(int[] nums){
for(int i=0; i<nums.length; i++){
int minIndex = i;
for(int j=i+1; j<nums.length; j++){
if(nums[j] < nums[minIndex]){
minIndex = j;
}
}
swap(nums,i,minIndex);
}
return nums;
}
public static void swap(int[] nums, int i, int j){
int tmp = nums[j];
nums[j] = nums[i];
nums[i] = tmp;
}
(전체) Code )
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
class Test{
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String s = bf.readLine();
StringTokenizer st = new StringTokenizer(s);
int[] nums = new int[st.countTokens()];
for(int i=0; i<nums.length; i++){
nums[i] = Integer.parseInt(st.nextToken());
}
nums = selection_sort(nums);
print(nums);
}
public static int[] selectionSort(int[] nums){
for(int i=0; i<nums.length; i++){
int minIndex = i;
for(int j=i+1; j<nums.length; j++){
if(nums[j] < nums[minIndex]){
minIndex = j;
}
}
swap(nums,i,minIndex);
}
return nums;
}
public static void swap(int[] nums, int i, int j){
int tmp = nums[j];
nums[j] = nums[i];
nums[i] = tmp;
}
public static void print(int[] nums) throws IOException{
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
for(int num : nums){
bw.write(num+ " ");
}
bw.flush();
bw.close();
}
}
'Java > 코딩테스트' 카테고리의 다른 글
[JAVA] List<String> 정렬 (기본 정렬, 커스텀 정렬) (0) | 2025.02.14 |
---|---|
[JAVA] 배열 Stream 활용해서 풀기 (1) | 2025.01.20 |
[java] 그래프 만들기 ( 인접 행렬 구현) (0) | 2024.06.26 |
삽입 정렬(JAVA) (0) | 2024.04.01 |
버블 정렬(JAVA) (0) | 2024.04.01 |