『C언어』 정렬 알고리즘의 종류
정렬 알고리즘의 종류
알고리즘 | Worst | AVG | Best | Demo (sec) |
삽입정렬 | n^2 | n^2 | n | 7.5 |
선택정렬 | n^2 | n^2 | n^2 | 11 |
버블정렬 | n^2 | n^2 | n^2 | 23.5 |
셀정렬 | n^2 | n^3/2 | n | 0.06 |
퀵정렬 | n^2 | n log n | n log n | 0.03 |
힙정렬 | n log n | n log n | n log n | 0.04 |
병합정렬 | n log n | n log n | n log n | 0.03 |
정렬 알고리즘 코드
1. 선택 정렬
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
|
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#define NUM 100
int main(){
int arr[10000], tmp;
int min;
/* 숫자 입력단 */
for(int i = 0 ; i < NUM ; i++){
scanf("%d", &arr[i]);
}
/* 정렬단 */
for(int i = 0 ; i < NUM ; i++) {
min = i;
for(int j = i ; j < NUM ; j++){
if(arr[j] < arr[min]){
min = j;
}
}
tmp = arr[i];
arr[i] = arr[min];
arr[min] = tmp;
}
/* 출력단 */
for(int i = 0 ; i < NUM ; i++){
printf("%d\n", arr[i]);
}
}
|
cs |
2. 버블정렬
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 |
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#define n 100
int main() {
int arr[1000], tmp;
/* 숫자 입력단 */ for(int i = 0 ; i < n ; i++){
scanf("%d", &arr[i]);
}
/* 정렬단 */ for(int i = 0 ; i < n-1 ; i++){
for(int j = 0 ; j < n-1-i ; j++){
if(arr[j] > arr[j+1]) {
tmp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tmp;
}
}
}
/* 출력단 */ for(int i = 0 ; i < n ; i++){
printf("%d ", arr[i]);
}
}
|
cs |