今天做了一下途游游戏的线上笔试题,题目中有一个是合并两个无序数组并排序(从大到小),在这里写一下我的思路,如果有更简单思路的大神请给我留言。
我首先想到的一个思路就是把A和B先放在同一个数组里,在随便用一个排序算法对新数组进行排序,这个方法时间复杂度和空间复杂度应该很高,属于暴力解法,给出代码。
#include<iostream>
using namespace std;
void quick_sort(int *arr,int left,int right)//快速排序算法
{
int ltemp=left,rtemp=right;
int f=arr[(left+right)/2];
while(ltemp<rtemp){
while(arr[ltemp]>f) ltemp++;
while(arr[rtemp]<f) rtemp--;
if(ltemp<rtemp){
int temp =arr[ltemp];
arr[ltemp]=arr[rtemp];
arr[rtemp]=temp;
ltemp++;
rtemp--;
}
}
if(ltemp==rtemp){
ltemp++;
}
if(left<rtemp){
quick_sort(arr,left,ltemp-1);
}
if(ltemp<right){
quick_sort(arr,rtemp+1,right);
}
}
void sort(int a[],int b[],int lena,int lenb