码迷,mamicode.com
首页 > 编程语言 > 详细

常见排序之归并排序

时间:2018-12-08 19:15:20      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:amp   printf   int   常见   for   void   eof   lse   efi   

#include <stdio.h>
#include <stdlib.h>

#define ELEMENT_CNT 10

void merge(int *array,int low,int mid,int high)
{
int i,k;
int left_low = low;
int left_high = mid;
int right_low = mid+1;
int right_high = high;

int *temp = (int *)malloc((high-low+1)*sizeof(int));

if(!temp)
{
return;
}


for(k = 0; left_low <= left_high && right_low <= right_high; k++)
{
if(array[left_low] < array[right_low])
{
temp[k] = array[left_low++];
}
else
{
temp[k] = array[right_low++];
}

}

if(left_low <= left_high)
{
for(i = left_low; i <= left_high; i++)
{
temp[k++] = array[i];
}
}

if(right_low <= right_high)
{
for(i = right_low; i <= right_high; i++)
{
temp[k++] = array[i];

}
}

for(i = 0; i < (high-low+1); i++)
{
array[low+i] = temp[i];
}

free(temp);
return;

}

void merge_sort(int *array,int low,int high)
{
int mid = 0;

if(low < high)
{
mid = (low+high)/2;

merge_sort(array,low,mid);
merge_sort(array,mid+1,high);
merge(array,low,mid,high);

}

}


void trease_array(int *array)
{
int i;

for(i = 0; i < ELEMENT_CNT; i++)
{
printf("%d\t",array[i]);
}
}


int main(void)
{
int array_sort[ELEMENT_CNT] = {6,4,7,3,8,2,9,1,5,0};

trease_array(array_sort);

merge_sort(array_sort,0,ELEMENT_CNT-1); //此处长度为ELEMENT_CNT-1

trease_array(array_sort);

return 0;
}

 

常见排序之归并排序

标签:amp   printf   int   常见   for   void   eof   lse   efi   

原文地址:https://www.cnblogs.com/muzixiaofeng/p/10088637.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!