当前位置: 首页 > 面试题库 >

写出一个函数,输入是两个数组,输出是将两个数组中所有元素排序以后用一个数组输出。

柴亦
2023-03-14
本文向大家介绍写出一个函数,输入是两个数组,输出是将两个数组中所有元素排序以后用一个数组输出。相关面试题,主要包含被问及写出一个函数,输入是两个数组,输出是将两个数组中所有元素排序以后用一个数组输出。时的应答技巧和注意事项,需要的朋友参考一下

参考回答:

class Solution {
public:
int *sort(int *a,int lenA,int *b,int lenB){
fastSort(a,0,lenA);
fastSort(b,0,lenB);
return merge(a,lenA,b,lenB);
}
private:

//快速排序

void fastSort(int *a,int start,int end){
if(a==NULL || end-start<=1 || start<0)
return;
int pivotPos = start;
int pivot = a[start];
int temp;
for(int i=start+1;i<end;++i){
if(a[i]<pivot){
if(++pivotPos!=i){
temp = a[i];
a[i] = a[pivotPos];
a[pivotPos] = temp;
}
}
}
a[start] = a[pivotPos];
a[pivotPos] = pivot;
fastSort(a,start,pivotPos-1);
fastSort(a,pivotPos+1,end);
}

//两路归并

int *merge(int *a,int lenA,int *b,int lenB){
if(a==NULL || lenA<=0)
return b;
if(b==NULL || lenB<=0)
return a;
int *arry = new int[lenA+lenB];
if(arry==NULL){

cerr << "内存分配失败" << endl;

exit(1);
}
int posA = 0, posB = 0 ,pos = 0;
while(posA<lenA && posB<lenB){
if(a[posA]<b[posB])
arry[pos++] = a[posA++];
else
arry[pos++] = b[posB++];
}
while(posA<lenA)
arry[pos++] = a[posA++];
while(posB<lenB)
arry[pos++] = b[posB++];
return arry;
}
};

 

 类似资料:
  • 本文向大家介绍java 键盘输入一个数,输出数组中指定元素的示例,包括了java 键盘输入一个数,输出数组中指定元素的示例的使用技巧和注意事项,需要的朋友参考一下 如下所示: 输出: 请输入数组下标: 5 你输入的是:5对应数组元素是:987 以上这篇java 键盘输入一个数,输出数组中指定元素的示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • Leetcode#167几乎与#1相同,但为什么我不能只添加一个if条件? 函数twoSum应该返回两个数字的索引,使它们相加为目标,其中index1必须小于index2。 注: 返回的答案(index1和index2)不是从零开始的。您可以假设每个输入都有一个解决方案,并且不能两次使用同一个元素。

  • 本文向大家介绍C#不重复输出一个数组中所有元素的方法,包括了C#不重复输出一个数组中所有元素的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#不重复输出一个数组中所有元素的方法。分享给大家供大家参考。具体如下: 1.算法描述 0)输入合法性校验 1)建立临时数组:与原数组元素一样。该步骤的目的是防止传入的原数组被破坏 2)对临时数组进行排序 3)统计临时数组共有多少个不同的数字。该

  • 本文向大家介绍java 将一个数组逆序输出的方法,包括了java 将一个数组逆序输出的方法的使用技巧和注意事项,需要的朋友参考一下 题目: 将一个数组逆序输出。 代码: 以上这篇java 将一个数组逆序输出的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 标题输出: 车身输出: 有人能解决这个问题吗?我尝试了不同的命令来合并这两个(包括堆栈),我得到了同样的错误。虽然尺寸(列)看起来是一样的。

  • 问题内容: 这是在采访中问我的,这是我提供的解决方案: 有没有更有效的方法可以做到这一点? 编辑:更正的长度方法。 问题答案: 稍有改进,但是在主循环之后,当到达另一个输入数组的末尾时,可以用来复制其中一个输入数组的结尾。但是,那不会改变你解决方案的性能特征。