배열은 공통 이름을 공유하는 관련 데이터 항목의 그룹입니다. 배열의 특정 값은 "색인 번호"의 도움으로 식별됩니다.
배열 선언
배열을 선언하는 구문은 다음과 같습니다 -
datatype array_name [size];
예를 들어,
float marks [50]
50개의 float 요소를 포함하는 배열로 'marks'를 선언합니다.
int number[10]
최대 10개의 정수 상수를 포함하는 배열로 '숫자'를 선언합니다.
각 요소는 "배열 색인"을 사용하여 식별됩니다.
배열 인덱스를 사용하면 배열 요소에 쉽게 접근할 수 있습니다.
병합 정렬에 사용하는 논리는 다음과 같습니다. -
void MergeSort(int *array, int left, int right){ int middle = (left+right)/2; if(left<right){ //Sorting the left part MergeSort(array, left, middle); //Sorting the right part MergeSort(array, middle + 1, right); // Merge the two parts Merge(array, left, middle, right); } }
모든 요소를 병합하는 논리는 다음과 같습니다 -
void Merge(int *array, int left, int middle, int right){ int tmp[right - left + 1]; int pos = 0, leftposition = left, rightposition = middle + 1; while (leftposition <= middle && rightposition <= right){ if (array[leftposition] < array[rightposition]){ tmp[pos++] = array[leftposition++]; }else{ tmp[pos++] = array[rightposition++]; } } while (leftposition <= middle) tmp[pos++] = array[leftposition++]; while (rightposition <= right) tmp[pos++] = array[rightposition++]; int i; for (i = 0; i < pos; i++){ array[i + left] = tmp[i]; } return; }
프로그램
다음은 정렬을 병합하는 C 프로그램입니다 -
#include <stdio.h> void Merge(int * , int , int , int ); void MergeSort(int *array, int left, int right){ int middle = (left+right)/2; if(left<right){ //Sorting the left part MergeSort(array, left, middle); //Sorting the right part MergeSort(array, middle + 1, right); // Merge the two parts Merge(array, left, middle, right); } } void Merge(int *array, int left, int middle, int right){ int tmp[right - left + 1]; int pos = 0, leftposition = left, rightposition = middle + 1; while (leftposition <= middle && rightposition <= right){ if (array[leftposition] < array[rightposition]){ tmp[pos++] = array[leftposition++]; } else{ tmp[pos++] = array[rightposition++]; } } while (leftposition <= middle) tmp[pos++] = array[leftposition++]; while (rightposition <= right) tmp[pos++] = array[rightposition++]; int i; for (i = 0; i < pos; i++){ array[i + left] = tmp[i]; } return; } int main(){ int size; printf("\n enter size of array:"); scanf("%d", &size); int array[size]; int i, j, k; printf("\n enter the elements in an array:"); for (i = 0; i < size; i++){ scanf("%d", &array[i]); } MergeSort(array, 0, size - 1);//calling sort function for (i = 0; i< size; i++){ printf("%d ", array[i]); } printf("\n"); return 0; }
출력
위의 프로그램이 실행되면 다음과 같은 결과가 생성됩니다 -
enter size of array:10 enter the elements in an array: 2 -10 34 -3 45 67 -89 34 23 67 -89 -10 -3 2 23 34 34 45 67 67