일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 자료구조
- windosws wbcs
- OSI
- 정렬 알고리즘
- 시간복잡도
- ftz level13
- System
- War Game
- 재귀
- LoB
- level13
- 큐
- 백준
- C
- 파일 시스템
- 두근두근 자료구조
- ftz
- Stack
- 암호수학
- c언어
- pwnable.kr
- web
- HTML
- Java
- SWiFT
- windosw 문자열
- PHP
- 스택
- 미로 탐색 알고리즘
- 파이썬
Archives
- Today
- Total
나의 기록, 현진록
[C] <자료구조> 선택 정렬 알고리즘 selection sort 시간 복잡도 본문
Programming/Algorithm & Data Structure
[C] <자료구조> 선택 정렬 알고리즘 selection sort 시간 복잡도
guswlsdk 2018. 3. 27. 01:22반응형
선택 정렬
선택 정렬이란 리스트 중에 최솟값을 찾아 맨 앞의 값과 교체하는 정렬이다.
시간 복잡도는 평균 O(n2)으로 일반적으로 유사한 삽입 정렬보다 비효율적이며, 특히 큰 리스트에서 최악의 효율성을 가진다.
시간 복잡도의 최상은 O(n2), 최악은 O(n2)이다.
다음 영상은 선택 정렬의 동작 방식이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #include <stdio.h> void selection_sort(int arr[], int len) { for (int i = 0; i < len; i++) { int min = i; for (int j = i; j < len; j++) if (arr[min] > arr[j]) min = j; if (arr[i] != arr[min]) { int tmp = arr[i]; arr[i] = arr[min]; arr[min] = tmp; } } } void main() { int arr[] = { 9,1,6,8,4,3,2,0 }; int len = sizeof(arr) / sizeof(int); //배열의 길이 selection_sort(arr, len); for (int i = 0; i < len; i++) { printf("%d ", arr[i]); } } | cs |
반응형
'Programming > Algorithm & Data Structure' 카테고리의 다른 글
[C] <암호수학> 확장 유클리드 알고리즘 (0) | 2018.04.02 |
---|---|
[C] <자료구조> 삽입 정렬 알고리즘 insertion sort 시간 복잡도 (0) | 2018.03.27 |
[C] <자료구조> 버블정렬 알고리즘 bubble sort 시간 복잡도 (0) | 2018.03.27 |
[C] <암호 수학> 단일 치환 암호 복호화 카이사르, 시저 (0) | 2018.03.15 |
[C] <BAEKJOON> 백준 1003번: 피보나치 함수 (2) | 2017.09.05 |