程序员面试金典: 9.11 排序与查找 11.1给定两个排序后的数组A和B,其中A的末端有足够的缓冲容纳B。编写一个方法,将B合入A并排序。

本文介绍了如何将两个已排序的数组A和B合并成一个有序数组,通过从数组末尾开始比较元素并移动,避免了不必要的元素后移操作。示例代码展示了具体的实现过程,并提供了输入输出示例。
摘要由CSDN通过智能技术生成
#include <iostream>
#include <stdio.h>

using namespace std;

/*
问题:给定两个排序后的数组A和B,其中A的末端有足够的缓冲容纳B。编写一个方法,将B
      合入A并排序。
分析:排序分为:比较排序,插入排序,归并排序,快速排序,堆排序等。
      比较排序:通过元素之间两两比较进行排序,典型的有:冒泡排序,堆排序
	  插入排序:找到待排序的位置,将选择好的值插入该位置。典型的有:简单选择排序,从数组中选则最小的放在第一位,从剩余2~n位中选择次最小放在第二位等
	  由于两个数组都是排好序的,与其将两个数组依次从前向后比较,每次找到数组A中待插入位置,需要将A中带插入位置及其之后元素全部后移一位,倒不如将两个
	  数组都从最后面开始遍历,两两比较元素,找到最大的元素放在两个数组长度之和的位置,重复上述操作。

输入:
4(数组A中的元素个数) 3(数组B中的元素个数)
1 5 7 11(数组A中元素)
2 6 12(数组B中元素)
输出:
1 2 5 6 7 11 12(输出B合并入A后的排序结果)

*/

const int MAXSIZE = 10000;

void mergeSort(int* arrayA , int sizeA , int * arrayB , int sizeB)
{
	if(sizeA <= 0 || sizeB <= 0 || NULL == arrayA || NULL == arrayB)
	{
		return;
	}
	int i = sizeA - 1;
	int j = sizeB - 1;
	int
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值