อาร์เรย์คือกลุ่มของรายการข้อมูลที่เกี่ยวข้องกันซึ่งเป็นชื่อสามัญร่วมกัน ค่าเฉพาะในอาร์เรย์จะถูกระบุด้วยความช่วยเหลือของ "หมายเลขดัชนี"
การประกาศอาร์เรย์
ไวยากรณ์สำหรับการประกาศอาร์เรย์มีดังนี้ −
datatype array_name [size];
ตัวอย่างเช่น
float marks [50]
มันประกาศ 'เครื่องหมาย' เป็นอาร์เรย์ที่มีองค์ประกอบลอย 50 รายการ
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