IT/All-Day-Algorithms_쫑알쫑알(종일 알고리즘)
[java & c]선택정렬(SelectionSort)
밍띠이
2019. 3. 17. 01:26
반응형
선택정렬
단순하지만 비효율 적인 방법 : 삽입정렬, 선택정렬, 버블정렬등
(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);
}
}
}
반응형