Skip to main content

Sample C Program To Implement Merge Sort Using Divide & Conquer Strategy.


STEP 1: Start the program.
STEP 2: Read the value of n.
STEP 3: Set a for loop to read the elements of array.
for (i = 0; i < n; i++)
STEP 4: Call the function split ( a, 0, n – 1 )
STEP 5: Print the sorted array a.
STEP 6: Stop the program.

FUNCTION MERGE_SORT (int *a, int low, int high)

STEP 1: Declare the local variable.
STEP 2: If low is less than high then assign the mean value of low and high to mid.
mid = ( low + high ) / 2
STEP 3: Call the function merge_sort ( a, low, mid ).
STEP 4: Call the another function merge_sort ( a, mid + 1, high ).
STEP 5: Call the function combine ( a, low, mid, high ).

FUNCTION SPLIT(int *c, int first, int last)

STEP 1: Declare the local variables.
STEP 2: Set the while loop till the condition i <= mid && j <= high is failed.
STEP 3: Check whether a[i] < a[j]
STEP 4: If so the assign the value of a[j] to temp[k] and increment j and k
temp[k] = a[i]
STEP 5: Else assign a[j] to temp[k] and then increment j and k

STEP 6: Set another while loop till i is less than mid.
STEP 7: Assign the value of a[i] to temp[k]
temp[k] = a[i]
STEP 8: Set another while loop till j is greater than mid.
STEP 9: Assign the value of a[j] to temp[k]
temp[k] = a[j]
STEP 10: Construct a for loop for k.
for(k = low; k <= high; k++)

STEP 11: Assign the value of temp[k] to a[k].
a[k] = temp[k]



void split(int *, int, int);
void merge(int *, int, int, int, int);
int a[25], b[25];

void main()

int i, n;
printf(" Enter the limit ");
scanf(" %d ", &n);

printf(" \n Enter the elements ");

for(i = 0; i < n; i++)
scanf(" %d ", &a[i]);

split(a, 0, n – 1 );
printf("\n The sorted list is: ");

for(i = 0 ;i < n; i++)
printf(" \n %d ", a[i]);



void split(int *c, int first, int last)

int mid;
if(first < last)
mid = ( first + last ) / 2;

split(c, first, mid);
split(c, mid+1, last);

merge(c, first, mid, mid + 1, last);


void merge(int *a, int f1, int l1, int f2, intl2)

int i, j, k = 0;
i = f1;
j = f2;
while(i <= l1&& j <= l2)

if(a[i] < a[j])
b[k] = a[i++];
b[k] = a[j++];


while(i <= l1)
b[k++] = a[i++];

while(j <= l2)
i = f1;

j = 0;

while(i <= l2 && j < k)
a[i++] = b[j++]



Enter the limit: 6
Enter the elements
The Sorted List is: 09 23 45 65 89 98


If you liked the post/article or if you think this post/article helped you in any way, then please show your appreciation by filling up at least one form from the options given below:

-- Click Here To Win Rewards Each Time When You Access Internet.

-- Click Here To Win Rewards, Cash, Shopping Vouchers & Exciting Gifts For Completing Surveys.

-- Click Here To Submit Your Resume - TimesJobs (Freshers & Experienced)

-- Click Here To Submit Your resume - Shine (Freshers & Experienced)


  1. this code is not working...
    please fix it

  2. the code has a bug at after scanning of second array


Post a Comment

Please share your opinions and suggestions or your experience in the comments section. This way we can all help each other...

Experienced guys can share their resumes at

Popular posts from this blog

Tell Me Something About Yourself - Interview Answers.

Try to introduce some of your most important employment-oriented skills as well as your education and accomplishments to the interviewer. Answer to this question is very important because it positions you for the rest of the interview. That's why this statement is often called the "Positioning Statement".

One should take the opportunity to show his/her communication skills by speaking clearly and concisely in an organized manner. Since there is no right or wrong answer for this question hence it is important to appear friendly.


1) I am a person with strong interpersonal skills and have the ability to get along well with people. I enjoy challenges and looking for creative solutions to problems.

2) Besides the details given in my resume, I believe in character values, vision and action. I am quick in learning from mistakes. I am confident that the various tests that you have conducted will corroborate my competencies aptitude and right attitude for the…

100 C Programs Frequently Asked in Technical Interview.

Why Should We Hire You? - Interview Answers

The interviewer asks this question just to find out how your skills, experience and knowledge can add value to the job.Well to answer this question you need to learn what they are looking for and then tie them with your strengths. This ensures that you are a viable fit for the position.

The more detail you give the stronger your answers will be. Try to summarize all your accomplishments and relate what makes you unique.

The question can also be

"Why should we hire you over other candidates?"
"Why should we hire you over the others waiting to be interviewed?"

Your answers can be:

1) You should hire me because I’m the best person for the job. I realize that there are likely other candidates who also have the ability to do this job. Yet I bring an additional quality that makes me the best person for the job - my passion for excellence. I am passionately committed to producing truly class results.

2) I believe I’m the perfect fit for this position. I’m very detai…