반응형
선택정렬
단순하지만 비효율 적인 방법 : 삽입정렬, 선택정렬, 버블정렬등
(n-1)+(n-2) + ... + 1= n(n-1)/2 = O(n^2)
주의
값이 같은 레코드가 있는 경우에 상대적인 위치가 변경될 수 있기 때문에 안정성을 만족하지 않는다.
java
import java.util.Arrays;
public class SelectionSortEx {
public static void main(String[] args) {
int[] list = { 1, 3, 4, 9, 7, 6 };
int least = 0;
int temp = 0;
System.out.println("정렬할 배열 : " + Arrays.toString(list));
for (int i = 0; i < list.length - 1; i++) {
least = i;
for (int j = i + 1; j < list.length; j++) {
if (list[j] < list[least]) {
least = j;
temp = list[i];
list[i] = list[least];
list[least] = temp;
} // if
} // 내부 for문
System.out.println("[" + i + "] 번째 선택정렬 중 :" + Arrays.toString(list));
} // 외부 for문
// 결과
System.out.println("선택정렬 결과 : " + Arrays.toString(list));
}
}
C
#define SWAP(x, y, t) ( (t) = (x), (x) = (y), (y) = (t) )
void selection_sort(int list[], int n)
{
int i, j, least, temp;
for ( i = 0; i < n - 1; i++ ) {
least = i;
for ( j = i + 1; j < n; j++) {
if (list[j] < list[least]) least = j;
SWAP(list[i], list[least], temp);
}
}
}
반응형
'IT > All-Day-Algorithms_쫑알쫑알(종일 알고리즘)' 카테고리의 다른 글
[java] 버블정렬(Bubble_sort) (0) | 2019.03.18 |
---|---|
[java]합병정렬(Merge_sort) (0) | 2019.03.18 |
[알고리즘] 알고리즘 쉽게 하는법 - 바뀌는부분 vs 바뀌지 않는 부분 (0) | 2019.02.13 |
[백준] if문 - 4344번: 평균은 넘겠지 (JAVA) (0) | 2019.01.17 |
[백준]for문 - 1924번: 2007년(java) (0) | 2019.01.15 |