嵌入式面经大全(19/30)--常见算法(三)

牛客高级系列专栏:





简介

本人2020年本硕毕业于广东工业大学:嵌入式许乔丹,牛客高级专栏作者,牛客大学讲师,本科阶段搞了4年单片机、曾参加全国大学生恩智浦汽车竞赛,发表4个硬件专利。研究生阶段找了嵌入式linux的实习,毕业后拿到珠海格力,云从科技,CVTE,小米,美的,华为的嵌入式offer,签约CVTE嵌入式岗位。

在CVTE先后做过嵌入式Linux开发和安卓系统开发,参与过TV板卡、显示屏板卡、智能家居板卡、希沃网课学习机的开发。欢迎交流嵌入式或者安卓哈!

正文开始⬇️

第四章常见算法

4.1 排序算法

4.1.1各种排序算法的时间空间复杂度、稳定性⭐⭐⭐⭐⭐

4.1.2各种排序算法什么时候有最好情况、最坏情况(尤其是快排) ⭐⭐⭐⭐

4.1.3冒泡排序⭐⭐⭐⭐

4.1.4选择排序⭐⭐⭐⭐

4.1.5插入排序⭐⭐⭐⭐

4.1.6希尔排序⭐⭐⭐⭐

4.1.7归并排序⭐⭐⭐⭐

4.1.8快速排序⭐⭐⭐⭐⭐

4.1.9快排的partition函数与归并的Merge函数⭐⭐⭐

4.1.10循环队列的实现⭐⭐⭐

4.2 STL库相关

4.2.1 vector list异同⭐⭐⭐⭐⭐

4.2.2 vector内存是怎么增长的vector的底层实现⭐⭐⭐⭐

4.2.3 vector和deque的比较⭐⭐⭐⭐

4.2.4为什么stl里面有sort函数list里面还要再定义一个sort⭐⭐⭐

4.2.5  STL底层数据结构实现⭐⭐⭐⭐

4.2.6利用迭代器删除元素会发生什么?⭐⭐⭐⭐

4.2.7 map是如何实现的,查找效率是多少⭐⭐⭐⭐⭐

4.2.8几种模板插入的时间复杂度 ⭐⭐⭐⭐⭐

4.1.7归并排序(Merge Sort)

void Merge(int arr[], int start, int mid, int end, int * temp)
{
    //合并两个有序序列    
    int length = 0;
    //表示辅助空间有多少个元素    
    int i_start = start;    
    int i_end = mid;    
    int j_start = mid + 1;    
    int j_end = end;    
    while (i_start <= i_end && j_start <= j_end)
    {        
        if (arr[i_start] < arr[j_start])
        {            
            temp[length] = arr[i_start];             
            length++;            
            i_start++;        
        }        
        else        
        {            
            temp[length] = arr[j_start];            
            length++;            
            j_start++;        
        }    
    }    
    while (i_start <= i_end)    
    {        
        temp[length] = arr[i_start];        
        i_start++;        
        length++;    
    }    

    while (j_start <= j_end)    
    {        
        temp[length] = arr[j_start];        
        length++;        
        j_start++;    
    }    

    //把辅助空间的数据放到原空间    
    for (int i = 0; i < length; i++)    
    {        
        arr[start + i] = temp[i];    
    }
}

void MergeSort(int arr[], int start, int end, int * temp)
{    
    if (start >= end)
        return;    
    int mid = (start + end) / 2;    
    MergeSort(arr, start, mid, temp);
    MergeSort(arr, mid + 1, end, temp);     
    Merge(arr,

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

嵌入式/C++面试题解析大全 文章被收录于专栏

#承诺提供免费技术答疑# 该专栏是我校招阶段整理的关于“嵌入式面经”的111道题目,“C/C++软件开发岗位”也可以参考下。涵盖了大多数嵌入式/软件开发岗位常见基础面试题,题目来源是牛客网各大大厂的面经,答案是我逐个查阅资料,是嵌入式面试最常见的题目和答案。订阅即赠送简历模板、超大笔试面试真题大礼包、内推机会,需要的同学点击我头像私信即可!

全部评论
很有价值的分享~
点赞 回复 分享
发布于 2020-06-05 20:09

相关推荐

牛客73617529...:无端端被你骂一句
点赞 评论 收藏
分享
门口唉提是地铁杀:之前b站被一个游戏demo深深的吸引了。看up主页发现是个初创公司,而且还在招人,也是一天60。二面的时候要我做一个登录验证和传输文件两个微服务,做完要我推到github仓库,还要我加上jaeger和一堆运维工具做性能测试并且面试的时候投屏演示。我傻乎乎的做完以后人家跟我说一句现在暂时不招人,1分钱没拿到全是白干
你的秋招第一场笔试是哪家
点赞 评论 收藏
分享
昨天 12:22
门头沟学院 Java
点赞 评论 收藏
分享
评论
7
12
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务