用C语言编一个归并排序的程序

来源:百度知道 编辑:UC知道 时间:2024/06/11 15:01:47

/**设个有序关键字表s1=(18,25,37,42),s2=(20,33,40).同时将s1,s2存储在数组r[1...7]中
**s1放r[1..4],s2放[5..7],现要归并到一维数组r2[1..7]中,只要依次比较这两个有序
**表中相应记录关键字,按取小原则复制到r2中
**/
#include<stdio.h>
#define MAXITEM 100
typedef struct rec
{
int key;
char data[20];
}elemnode[MAXITEM];

void merge(elemnode r,elemnode r1,int l,int m,int h)
{ // i,j是r的指示器,i的取值从l到m, j的取值从m+1到h,k是r1的指示器
int i = l,j = m+1,k = l;

while(i<=m && j<=h)
{
if(r[i].key<=r[j].key)
{
r1[k] = r[i];
i++;
}
else
{
r1[k] = r[j];j++;
}
k++;
}
if(i>m)
while(j<=h)
{
r1[k] = r[j];