배열(array)은 서로 관련된 데이터 항목들을 하나의 이름 아래에 저장하는 자료 구조입니다.
예를 들어, int student[30];
여기서 student는 단 하나의 변수 이름으로 30개의 데이터 항목을 담을 수 있는 배열 이름입니다.
배열의 주요 연산
배열에서 수행할 수 있는 대표적인 연산은 다음과 같습니다.
탐색(Searching) − 특정 요소가 배열에 존재하는지 확인합니다.
정렬(Sorting) − 배열의 요소들을 오름차순 또는 내림차순으로 배치합니다.
순회(Traversing) − 배열의 모든 요소를 순서대로 처리합니다.
삽입(Inserting) − 배열에 새로운 요소를 추가합니다.
삭제(Deleting) − 배열에서 특정 요소를 제거합니다.
이번 프로그램에서는 교환(swap) 기법을 사용하여 배열의 요소들을 오름차순으로 정렬합니다.
오름차순 정렬 로직
배열을 오름차순으로 정렬할 때 적용되는 핵심 로직은 다음과 같습니다.
for(i=0;i<10-1;i++){
for(j=i+1;j<10;j++){
if(element[i]>element[j]){
temp=element[i]; //element[i]와 element[j]를 교환
element[i]=element[j];
element[j]=temp;
}
}
}정렬 원리 이해하기
이 정렬 방식은 선택 정렬(selection sort)과 유사한 원리로 동작합니다. 바깥쪽 반복문이 기준 위치 i를 지정하면, 안쪽 반복문이 i 이후의 모든 요소 j와 값을 비교하여 더 작은 값이 발견될 때마다 두 요소의 자리를 맞바꿉니다. 이 과정을 끝까지 반복하면 작은 값부터 차례대로 앞쪽에 배치되어 최종적으로 오름차순 배열이 완성됩니다.
전체 프로그램 코드
다음은 10개의 요소를 가진 배열을 오름차순으로 정렬하는 C 프로그램입니다.
#include<stdio.h>
int main(){
int element[10],i,j,temp;
printf("enter 10 integer numbers:");
for(i=0;i<10;i++){
scanf("%d",&element[i]);
}
for(i=0;i<10-1;i++){
for(j=i+1;j<10;j++){
if(element[i]>element[j]){
temp=element[i]; //element[i]와 element[j]를 교환
element[i]=element[j];
element[j]=temp;
}
}
}
printf("Elements are now in ascending order:");
for(i=0;i<10;i++)
printf("%d\n",element[i]);
return 0;
}
실행 결과
위 프로그램의 실행 결과는 다음과 같습니다.
enter 10 integer numbers:
12
23
34
1
22
34
56
45
33
78
Elements are now in ascending order:
1
12
22
23
33
34
34
45
56
78