개발자의 오르막
알고리즘 - 선택정렬 본문
# 알고리즘이란?
- 알고리즘은 입력, 출력, 유한성, 명백성, 효과성을 만족해야 합니다.
- 알고리즘은 분석을 통해 좋고 나쁨을 평가할 수 있습니다.
- 알고리즘은 기초 프로그래밍과 자료구조를 공부한 이후에 배우면 좋습니다.
- 알고리즘은 논리이며 수학이고 실질적인 개발에 적용되는 기초적인 아이디어입니다.
# 대표유형
- 파싱, 해싱, 정렬, 시뮬레이션 / 구현
- 탐색(BFS/DFS), 완전탐색(백트래킹) / 탐색
- 자료구조(스택, 큐, 힙 등), / 구조
- Greedy, DP, 이분탐색 / 알고리즘
# 선택정렬이란?
즉, 선택 정렬은 첫 번째 자료를 두 번째 자료부터 차례대로 비교하여 가장 작은 값을
찾아 첫 번째에 놓고, 계속해서 차례대로 비교하여 반복하는 정렬을 수행
빨 간색이 값 비교 중, 노란 색이 순서 확정
- 문제
다음의 숫자들을 오름차순으로 정렬하는 프로그램을 작성하세요.
1 10 5 8 7 6 4 3 2 9
- 풀이
public List<Integer> solution(int[] d) {
List<Integer> answer = new ArrayList<Integer>();
for(int i=0; i<d.length; i++) {
answer.add(d[i]);
}
Collections.sort(answer);
return answer;
}
public int[] solution2(int[] d){
int temp = 0;
for(int i=0; i<d.length-1; i++) {
for(int j=i+1; j<d.length; j++) {
temp = 0;
if(d[i] > d[j]) {
temp = d[i];
d[i] = d[j];
d[j] = temp;
}
}
}
return d;
}
public int[] solution3(int[] d){
int temp; int index = 0;
int min;
for(int i=0; i<d.length; i++) {
min = 9999;
for(int j=i; j<d.length; j++) {
if(min > d[j]) {
min = d[j];
index = j;
}
}
temp = d[i];
d[i] = d[index];
d[index] = temp;
}
return d;
}
public static void main(String[] args) {
Nadongbin1 su = new Nadongbin1();
int[] d = {1,10,5,2,7,6,4,5,2,3};
// List<Integer> answer = su.solution(d);
// for(int i=0; i<answer.size(); i++) {
// System.out.print(answer.get(i));
// }
int[] answer = su.solution3(d);
for(int i=0; i<answer.length; i++) {
System.out.print(answer[i]);
}
}
'Algorithm' 카테고리의 다른 글
[코드 트리 챌린지] 유클리드 호제법 (1) | 2024.02.24 |
---|---|
[Java] 프로그래머스 레벨2 접두사 문제 (0) | 2019.09.18 |
[Java] 프로그래머스 레벨1 요일맞추기 (0) | 2019.09.06 |
[Java]프로그래머스 레벨1 예산문제 (0) | 2019.09.06 |
[Java] 프로그래머스 레벨1 시저암호 (0) | 2019.09.05 |
Comments