#include<stdio.h>
#include<time.h>
//数组大小
#define N 100
//随机数的最大值
#define max 100
void merge(int a[],int p,int x,int q,int b[]){
int i = p, r = x + 1, k=p;
//保证还有数组的元素没有放入临时数组B[];
while(i<=x || r <= q){
//如果r>q成立就说明i<=x一定成立
//就说明前面那一段数组还有元素没有比较到那时后面那一段数组已经没有元素了
//如果是r>q不成立就说明r<=q成立如果 if里面的i<=x也成立
//就说明两段数组都还有元素所以就需要在IF里面比较元素的大小
if((r > q)||(i <= x &&a[i] <= a[r])){
b[k++] = a[i++];
}else{
b[k++] = a[r++];
}
}
int j;
//将B数组重新放入A数组
for(j = p;j <=q;j++)
a[j] = b[j];
}
void mergeSort(int a[],int p,int q,int b[]){
if(p<q){
//将数组平均分为两段
int x=(q + p)/2;
//递归
mergeSort(a,p,x,b);
mergeSort(a,x+1,q,b);
merge(a,p,x,q,b);
自动生成随机数测试归并排序
最新推荐文章于 2022-01-28 10:55:33 发布
该博客介绍了如何使用归并排序算法对包含100个随机数(范围在1-100之间)的数组进行排序。首先通过 srand 和 time 函数生成随机数,然后利用归并排序的递归思想将数组分为两部分,并调用 merge 函数进行合并。最后,展示了排序前后的数组结果。
摘要由CSDN通过智能技术生成