自动生成随机数测试归并排序

该博客介绍了如何使用归并排序算法对包含100个随机数(范围在1-100之间)的数组进行排序。首先通过 srand 和 time 函数生成随机数,然后利用归并排序的递归思想将数组分为两部分,并调用 merge 函数进行合并。最后,展示了排序前后的数组结果。
摘要由CSDN通过智能技术生成
#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);
      
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值