#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
程序员面试金典: 9.11 排序与查找 11.1给定两个排序后的数组A和B,其中A的末端有足够的缓冲容纳B。编写一个方法,将B合入A并排序。
最新推荐文章于 2021-12-26 19:30:29 发布
本文介绍了如何将两个已排序的数组A和B合并成一个有序数组,通过从数组末尾开始比较元素并移动,避免了不必要的元素后移操作。示例代码展示了具体的实现过程,并提供了输入输出示例。
摘要由CSDN通过智能技术生成