# 정렬 알고리즘
- selection sort(선택정렬)
배열 중에 가장 작은 원소들을 왼쪽부터 채워나가면서 숫자를 정렬하는 방법
각 회전(Pass)과정이 끝날때마다 앞쪽부터 정렬된 원소로 채워진다.
선택 정렬(Selection Sort)
- 주어진 데이터 중 최소값을 찾음 - 최소값을 맨 앞에 위치한 값과 교환 - 정렬된 데이터를 제외한 나머지 데이터를 같은 방법으로 정렬 - 시간복잡도 : O(n^2) [1회전] [2회전] [3회전] [4회전]
hahahoho5915.tistory.com
ex)
public class SelectionSort {
public static void main(String[] args) {
int[] num = {5, 4, 1, 3, 2};
for(int i=0;i<num.length-1;i++) {
for(int j=i+1;j<num.length;j++) {
if(num[i]>num[j]) {
int temp = num[i];
num[i] = num[j];
num[j] = temp;
}
}
}
for(int i=0;i<num.length;i++)
System.out.print(num[i] + " ");
}
}
- bubble sort(버블정렬)
인접한 두개의 원소를 비교하여 가장 큰 원소가 마지막자리로 오게해서 숫자를 정렬하는 방법
각 회전(Pass)과정이 끝날때마다 정렬은 뒤에서부터 하나씩 완료된다.
버블 정렬(Bubble Sort)
- 두 인접한 원소를 검사하여 정렬하는 방법 - 시간복잡도 : O(n^2) [1회전] [2회전] [3회전] - 세번의 회전에 걸쳐 정렬은 완료되었지만 프로그램은 남은 데이터의 비교연산을 계속 처리함. - 정렬은
hahahoho5915.tistory.com
ex)
public class BubbleSort {
public static void main(String[] args) {
int[] num = {5, 4, 1, 3, 2};
for(int i=0;i<num.length-1;i++) {
for(int j=0;j<num.length-1-i;j++) {
if(num[j]>num[j+1]) {
int temp = num[j];
num[j] = num[j+1];
num[j+1] = temp;
}
}
}
for(int i=0;i<num.length;i++)
System.out.print(num[i] + " ");
}
}
// 최종적인 결과는 오름차순인 경우 두 정렬 모두 동일하다.
728x90
'SW > Java' 카테고리의 다른 글
[필기정리] Day61 - 2진검색 예제문제 (0) | 2020.09.17 |
---|---|
[개념정리] Java의 정석 Chapter 3 연산자 (0) | 2020.07.27 |
[개념정리] Java의 정석 Chapter 2 변수 (0) | 2020.07.24 |
[개념정리] Java의 정석 Chapter 1 자바를 시작하기 전에 (0) | 2020.07.24 |
[문제] 자바의 정석 Chapter 7 객체지향 프로그래밍 2 연습문제 및 해답정리 (0) | 2020.07.24 |