728x90
가장 기초적인 정렬 4가지, 선택정렬 버블정렬 삽입정렬 퀵정렬을 배워볼것이다. 먼저 선택정렬이다
선택정렬의 핵심아이디어는 말그대로 '선택' 이다.
최솟값을 찾아 선택하여 제일 앞으로 보내자.
예시를 통해 이해해보자
1 10 5 8 7 6 4 3 2 9 와 같은 10개의 정수가 있을때. 제일 작은 원소는 1이다. 이미 제일 앞에 와있다.
그 다음 1을 고정시킨후 제일 작은 원소를 선택해보자 2이다.
1 10 5 8 7 6 4 3 2 9
1 2 10 5 8 7 6 4 3 9
1 2 3 10 5 8 7 6 4 9
위 와같은 과정을 반복함으로써 정렬되는 것이다.
1.먼저 작은 값을 선택한다 . MIN 값 찾기
2. 그리고 고정된 숫자제외 제일 앞으로 보내준다. (= i번째 인덱스의 값과 교환한다.)
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
|
#include <stdio.h>
void swap(int* p, int a, int b);
int main(void)
{
int i, j, min, index, temp;
int array[10] = { 1, 10 , 5 , 8 ,7 ,6 ,4 ,3 ,2 ,9 };
for (i = 0; i < 10; i++) {
min = 9999; // 최솟값초기화
for (j = i; j < 10; j++)
{
if (min > array[j]) {
min = array[j];
index = j;
}
}
swap(array,i, index);
}
for(int k=0;k<10;k++){
printf("%d",array[k]);
}
return 0;
}
void swap(int *p,int a, int b) {
int temp = 0;
temp = p[a];
p[a] = p[b];
p[b] = temp;
}
|
cs |
728x90
'지난 학기들의 기록 > 알고리즘' 카테고리의 다른 글
[C 알고리즘] 힙 정렬 - Heap Sort Algorithm (0) | 2020.09.05 |
---|---|
[C 알고리즘] 병합 정렬 - Merge Sort Algorithm (0) | 2020.06.14 |
[C 알고리즘] 퀵 정렬 - Quick Sort Algorithm (0) | 2020.05.12 |
[C 알고리즘] 삽입정렬 - Insertion Sort Algorithm (0) | 2020.05.12 |
[C 알고리즘] 버블 정렬- Bubble Sort Algorithm (0) | 2020.05.11 |
댓글