C语言归并排序

来源:百度知道 编辑:UC知道 时间:2024/06/03 07:15:51
用随机函数产生50个100以内的随机数,并对其进行归并排序。急急急....
最好能给出的就能运行...谢谢了..
#include <stdlib.h>
int main(void)
{
int i;
printf("Ten random numbers from 0 to 99\n\n");
randomize();
for(i=0; i<50; i++)
printf("%4d", rand() % 100);
getch();
return 0;
}

这个是产生50个100以内随机数的程序...
要能运行的,急求...

/* 二路归并排序算法的源程序*/
#include<stdio.h>
#define MAXNUM 100
#define TRUE 1
#define FALSE 0
typedef int KeyType;
typedef int DataType;
typedef struct
{ KeyType key; /* 排序码字段 */
/*DataType info; 记录的其它字段 */ } RecordNode;
typedef struct
{ int n; /* n为文件中的记录个数,n<MAXNUM */
RecordNode record[MAXNUM]; } SortObject;
/* r[low]到r[m]和r[m+1]到r[right]是两个有序段 */
void merge(RecordNode r[], RecordNode r1[], int low, int m, int high)
{ int i=low, j=m+1, k=low;
while ( i<=m && j<=high ) /* 反复复制两个段的第一个记录中较小的 */
if (r[i].key<=r[j].key) r1[k++]=r[i++];
else r1[k++]=r[j++];
while (i<=m) r1[k++]=r[i++]; /* 复制第一个段的剩余记录 */
while (j<=high) r1[k++]=r[j++];/* 复制第二个段的剩余记录 */
}
/* 对 r 做一趟归并,结果放到 r1 中 */
void mergePass(RecordNode r[], RecordNode r1[], int n, int length)
{ int i=0, j; /* length为本趟归并的有序子段的长度 */
while (