c++实现合并两个无序数组并以从大到小的顺序排序

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

今天做了一下途游游戏的线上笔试题,题目中有一个是合并两个无序数组并排序(从大到小),在这里写一下我的思路,如果有更简单思路的大神请给我留言。
我首先想到的一个思路就是把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)
{
    int* c=new int[lena+lenb];//new一个新的数组,数组中元素的个数是两个数组之和
    for(int i=0;i<lena;i++){//把两个数组全部放到新建的数组中
        c[i]=a[i];
c++ 合并数组到小降序排列 c++ 合并数组到小降序排列题目设计思想设计表示源代码运行结果 题目 对两个有序数组进行合并:设有如下数组A、B,假设两个数组的元素都已经有序(从到小降序排列)。编程序,合并A、B数组形成一个新的数组C,使C的元素仍有序(从到小降序排列)。 int A[10]={123,88,86,86,33,15,7,0,-1,-3}; int B[10]={86,69,51,50,27,19,1... 阅读详情

相关推荐

途游第一次笔试题

总结:1)sizeof(str)和strlen(str)区别 2)Linux查找命令(在指定的文件下查找文件名里包含xxx的文件),显示文件内容的命令。 3)图解或文字描述TCP的三次握手。(四次挥手也需要明白) 4)将一个字符串反转。 5)二叉树前中后序遍历。 6)有101个...

一次一小时的博客 2953

C++排序

C++排序 算法概述: 归排序是将有序的两个数组进行排序,即将待排序的一个数组不断进行递归,直到递归成两个都只含有一个元素的数组,则对这两个之含有一个元素的数组进行排序,不断回溯,直到回溯到可以将待排序数组分成两个有序数组,之后对其进行最后一次有序数组排序,最后两个有序数组合并为一个有序数组,就得到了需要进行排序数组,可以从小到进行排序,也可以从到小进行排序。 代码: void mergeSort(vector<int>& nums, vector<int>&am

weixin_44328414的博客 442

途游笔试

int a[10]占用空间 如果是TC2.0,int占2字节,那int a[10]就是10*2=20字节;如果其他编译器,int占4字节,那么int a[10]就是10*4=40字节; 为了安全你需要用到这个的话可以用10*sizeof(int).这样比较安全。 func(char *str){printf(” %d”,sizeof(str));printf(” %d”,strlen(s

dada_master的博客 2879

排序C++代码实现(将两个有序数组元素依次比较合并为一个新的有序数组

@归排序C++代码实现(将两个有序数组元素依次比较合并为一个新的有序数组) 归排序分为两个的步骤,分为划分和归。归是将两个有序数组分别为数组A和数组B合并成为一个有序数组,首先取数组A和数组B的第一个元素进行比较,将其中较小的元素放入新的数组中,然后再取出较小元素数组中的下一个元素与另一个数组中的第一个元素进行比较,依然将两者较小的元素放入新的数组中,如此迭代下去,直到将两个数组合并完毕...

u014114763的博客 4788

合并排序c++实现

用递归实现合并排序

h_qingjia的博客 2746

合并无序数组

合并两个无序数组,使合并得到的数组有序,且无重复。

Raptor_2017的博客 2191

【LeetCode】合并两个有序数组

给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。

✨ 欢迎来到【Seal ^_^ 的CSDN博客】!✨ 3341

合并两个排序数组的高效算法

数组是计算机科学中一种重要的基础数据结构,它能够有效地存储和访问一系列同类型数据元素。数组的特点是可以通过下标快速访问任何一个元素,这种特性使得数组在随机访问和存储相同类型数据时具有高效性。本章将从数组的定义出发,探讨其基本操作和性质,为后续章节中涉及的复杂数据结构和算法提供基础知识。排序算法是将一系列的数据元素按照一定规则重新排列的过程,以便按照特定顺序(通常是从小到或从到小)进行访问。排序算法在计算机科学中有着广泛的应用,从基础的数据管理到复杂的算法实现都有其身影。

weixin_42584507的博客 1084

合并两个升序数组C++实现教程

htmltable {th, td {th {pre {简介:本篇探讨了在C++中如何将两个排序数组合并为一个升序数组。介绍了升序数组的概念,提供了一个有效的实现方法,该方法使用迭代器和指针进行比较和插入,最终在原地完成数组合并。该算法的时间复杂度为O(m+n),空间复杂度为O(1),是学习数据结构和算法的基础部分。

weixin_35705784的博客 867

C++合并有序数组

合并有序数组 【问题描述】编写一个程序,将两个元素从小到有序的一维数组成一个有序的一维数组。 【输入形式】用户在第一行输入第一个有序数组的元素数目,以回车结束此输入。然后在第二行按照刚才输入的元素数目依次输入数组元素,中间用空格分隔,最后用回车结束输入。第三行和第四行只需重复刚才的步骤,将第二个有序数组也输入即可。输入时候一定是有序输入的,即数组元素已经按照从小到顺序排列。 【输出形式】程序将两个有序一维数组合并为一个有序数组按照从小到顺序输出。每个元素输出时用空格分隔,最后一个输出之后没有空格

qjsssss的博客 4231

【每日一题】LeetCode - 合并两个有序数组

在这篇博客中,我们将讨论一个常见的编程问题:如何合并两个按非递减顺序排列的整数数组,使得合并后的数组仍然按非递减顺序排列。我们将通过一个具体的例子和 C++实现来帮助家理解这个过程。

XuanRan的博客 2672

合并两个排序数组

转自:合并两个排序数组 - 纯情小浩浩 - 博客园 需求:有两个非递减排序数组A1和A2,内存在A1的末尾有足够多的空余空间容纳A2,请实现一个函数,把A2中的所有数字插入A1中,且所有的数字都是排序的。 例如数组A1{ 1,5,7,8,9,17,20 }和数组A2{ 0,2,4,6,7,17,18,23,25 },合并后的结果应为{ 0,1,2,3,5,7,7,8,9,17,17,18,20,23,25 }。 分析: 思路一 直接从两个数组头部开始合并。 1.从A2开始遍历第一个数字

sduati的专栏 1051

【LeetCode刷题日志】88.合并两个有序数组

这一方法将两个数组看作队列,每次从两个数组头部取出比较小的数字放到结果中。注意,因为 m = 0 ,所以 nums1 中没有元素。nums1 中仅存的 0 仅仅是为了确保合并结果可以顺利存放到 nums1 中。的后半部分是空的,可以直接覆盖而不会影响结果。,5,6] ,其中斜体加粗标注的为 nums1 中的元素。那么如何直接避免覆盖。最终,合并数组不应由函数返回,而是存储在数组。需要合并 [1,2,3] 和 [2,5,6]。严格来说,在此遍历过程中的任意一个时刻,需要合并数组是 [] 和 [1]。

m0_68662723的博客 1万+

合并两个无序数组 —双指针技巧

合并两个有序数组: 给你两个按 非递减顺序 排列的整数数组nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 注意:最终,合并数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。 示例 1: 输入:nu.

qq_60717298的博客 1006

顺序合并两个非有序的链表(C++且不用链表实现

题目要求: 给定由整数组成的两个无序数组,根据顺序合并成一个数组。 输入包括两行,每行由若干个由->分隔的整数组成,分别表示以最左整数为链表头,单向指向右侧节点的链表,每行输入均以 .结尾。 输出为合并后的单向链表,由->表示其间的指针,最终指向由NULL表示的空值。 在合并过程中,比较两个链表当前待合并的第一个元素,选择其中较小的那个元素放入合并后的数组。 输入格式 输入两行字符串,...

weixin_43595755的博客 486

力扣面试经典150题——合并两个有序数组

合并两个有序数组,三种解法两种写法,详细解释,新手也能学会!!!

WenJGo的博客 1489

C++实现合并两个有序的数组合并后的数组依然有序

合并两个有序的数组

dangzhangjing97的博客 8887

合并排序

合并排序(Merge Sort)是一种基于分治思想的排序算法,其原理如下:1.将待排序数组分成两个数组,每个子数组包含约相等数量的元素。2.递归地对子数组进行排序,直到每个子数组小为1。3.将已排序的子数组合并成一个新的排序数组合并过程中按照从小到顺序逐个比较两个数组中的元素,将较小的元素放入新数组中,直到所有元素都被放入新数组中。4.最终得到一个有序数组合并排序的时间复杂度是O(nlogn),其中n是待排序数组的长度。它的空间复杂度是O(n)。

weixin_47225948的博客 2328
上一篇: c++实现二维数组中的查找+二维数组作为函数参数的方法
下一篇: c++实现字符串中空格替换成三个字符
程序媛皮皮虾
博客等级 码龄8年 11粉丝 8原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值