1. 순서도
2. 구현
#include <stdio.h>
int main(void)
{
int index = 10;
int arr[10] = { 10, 1, 5, 8, 7, 6, 4, 3, 2, 9 };
int i, j , temp, min;
printf("정렬 전 : ");
for (int i = 0; i < index; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
for (i = 0, j = i + 1; i < index - 1 ; i++, j = i + 1)
{
min = arr[i];
for (; j < index; j++)
/* 한바퀴 다 순회하면서 min에 arr[j]넣고 j값 temp에 킵하기
이부분에 문제 있었어... j가 10일때 아래 문장을 수행하면 else부분이 실행돼..
부등호 <=, < 조심! Out of Index
*/
{
if (min < arr[j])
continue;
else
{
temp = j;
min = arr[j];
}
}
arr[temp] = arr[i]; // 이부분?!
arr[i] = min; // 이부분?!
}
printf("정렬 후 : ");
for (int i = 0; i < index; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
3. Mistake
도중에 배열의 index 설정하는 부분에서 부등호를 <로 해야할 것을 <=로 해놨다가
배열 index를 넘어가는 바람에.. 정렬후 첫 값이 0으로 나왔었다..
syntax error보다 sementic error가 찾는데 더 오래걸린다는 걸 느꼈다.
끈기를 가지고 차분히 짚어가며..
'C > C' 카테고리의 다른 글
Memory Map 이해하기(Feat.성적처리 프로그램 소스) (0) | 2019.10.02 |
---|---|
2차원 배열 이해 (0) | 2019.09.29 |
배열 초기화 사소한 Tip (0) | 2019.09.26 |
성적 처리 프로그램 (분석->설계->구현) (0) | 2019.09.20 |
calloc 함수 (0) | 2019.06.10 |