您的位置:首页 > 房产 > 家装 > 全网营销推广是什么_小制作手工简单又漂亮_宁波seo公司推荐_重庆网站建设与制作

全网营销推广是什么_小制作手工简单又漂亮_宁波seo公司推荐_重庆网站建设与制作

2025/1/7 12:31:46 来源:https://blog.csdn.net/tangguofeng/article/details/143337700  浏览:    关键词:全网营销推广是什么_小制作手工简单又漂亮_宁波seo公司推荐_重庆网站建设与制作
全网营销推广是什么_小制作手工简单又漂亮_宁波seo公司推荐_重庆网站建设与制作

#include <stdio.h>

void Copy(int *a, int *b, int left, int right) {
    int i;
    for(i=0;i<right-left+1;i++)
    {
        a[i+left] = b[i];
    }
}
// 将 a[left,middle] 和 a[middle+1,right]合并到 b[left, right]中
void Merge(int *a, int left, int middle, int right) {
    int b[right-left+1];
    int i = left;                // left 到 middle 这一段的起始位置
    int j = middle + 1;            // middle+1 到 right 这一段的起始位置
    int k = 0;                    // 保存到 b 数组中的对应位置索引
    int q;                        // 循环变量

    // 当 a[1,middle] 和 a[middle+1,right] 中都有元素时,小的保存到 b 数组中 
    while((i<=middle)&&(j<=right)){
        if(a[i]<=a[j]){
            b[k] = a[i];
            i++;
        }else{
            b[k] = a[j];
            j++;
        }
        k++;
    }
    // 把余下部分加入到数组中
    if(i>middle){                    // 将 a[middle+1,right]中剩余部分拷贝到 b 数组当中
        for(q=j; q<=right; q++){
            b[k] = a[q];
            k++;    
        }
    }else{                            // 将 a[1,middle]中剩余部分拷贝到 b 数组当中
        for(q=i; q<=middle; q++){
            b[k] = a[q];
            k++;    
        }
    }
    Copy(a, b, left, right);        // 复制回数组 a
}

// 递归写法
void MergeSort(int *a, int left, int right){
    int middle;
    if(left < right){                        // 当至少有两个元素时
        middle = (left + right)/2;            // 取中点
        MergeSort(a, left, middle);            // 对 a[left,middle] 进行合并排序
        MergeSort(a, middle+1, right);        // 对 a[middle+1,right] 进行合并排序
        Merge(a, left, middle, right);         // 合并到数组 a
    }
}

int main() { //定义 main()主函数
    int arrayLength,i;
    printf("请输入要合并排序的数组大小:(数组最大上限100)\n");
    scanf("%d",&arrayLength);
    int a[arrayLength];
    printf("请输入待排序序列:\n");
    for(i=0; i<arrayLength; i++){ //a控制数组大小
        scanf("%d",&a[i]);
    }
    MergeSort(a, 0, arrayLength-1);
    printf("合并排序后的数组为:\n");
    for( i=0; i<arrayLength; i++){
        printf("%d ",a[i]);
    }
    return 0;
}
 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com