정렬: 데이터들을 특정한 값에 따라 정해진 순서대로 나열하는 것
수많은 데이터들을 효율적으로 탐색하기 위해서는 데이터들이 순서대로 정렬되어있어야 한다.
기본적인 정렬 알고리즘으로 버블정렬, 삽입정렬, 선택정렬 등이 있다.
void bubble_sort(int[] arr) {
for(int i = arr.length-1; i > 0; i--) {
for(int j = 0; j < i; j++) {
if(arr[j] > arr[j+1]) {
//swap
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
제자리 정렬
이다.안정 정렬
이다.제자리 정렬: 배열 이외에 추가 메모리를 요구하지 않는 정렬 방법
안정 정렬: 동일한 값을 가진 데이터의 순서가 유지되는 정렬 방법
void insertion_sort(int[] arr) {
for(int i = 0; i < arr.length; i++) {
for(int j = i; j > 0; j--) {
if(arr[j] < arr[j-1]) {
//swap
int temp = arr[j-1];
arr[j-1] = arr[j];
arr[j] = temp;
}
}
}
}
제자리 정렬
이다.안정 정렬
이다.void selection_sort(int[] arr) {
for(int i = 0; i < arr.length-1; i++) {
int min_index = i;
for(int j = i+1; j < arr.length; j++) {
if(arr[j] < arr[min_index])
min_index = j;
}
//swap
int temp = arr[min_index];
arr[min_index] = arr[i];
arr[i] = temp;
}
}
제자리 정렬
이다.불안정 정렬
(Unstable Sort) 이다.불안정 정렬: 동일한 값을 가진 데이터의 순서가 유지되지 않는 정렬 방법