![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Algorithm
小文21
小文在学习,
毕业早期进入移动操作系统公司从事Android App,framework方面工作,
后来到加入自动驾驶公司从事AVM(360环视影像),APA(自动泊车)开发,
目前在一家国产芯片公司从事图像驱动方面的工作
展开
-
BinarySearch_(二分查找)
背景今天无意中听见公司前辈说他给来公司面试的出了道二分查找的手写算法题,嗯嗯嗯,那就对这个二分查找进行简单思考。题目具体啥题目就没继续深入问了,那我自己给自己出了小题目:“给定一个元素有序分布的数组,要求查找某个的元素,如果找到返回元素下标,如果没有则返回-1,要求使用二分查找”;idea1.我首先居然不是想怎么查找,我想到的是,要是有重复元素,那怎么查找?找到那个才算是对的?...原创 2019-11-28 19:57:15 · 315 阅读 · 0 评论 -
Queue_使用栈来实现队列功能
之前同事给我讲的那个逆序输出数组的问题时,我还想过使用栈的先进后出特性来实现,但是稍微再想想还是不要了,根据数组本身就可以实现,使用栈就显得很多余了。栈先进后出的特性,要是稍加利用,也是可以实现先进先出的队列的效果。Idea使用两个栈来实现先进先出的存储特性使用栈暂存再取出的话,就是先进后出,顺序就颠倒过来,那如果再用一个栈来转存一下,不又是把颠倒的顺序载颠倒了一会,最后的结果就是和...原创 2019-11-23 22:00:12 · 266 阅读 · 0 评论 -
inversed_(翻转数组)
背景:听同事说他面试时被给了个手写算法题“给你一个数组,将它逆序输出”ieda好像不用idea,从头到尾输出就是正序的,那么从未到头输出过来不就是逆序的了。叭叭叭,就上代码#include <iostream>using namespace std;int main() { int arr[] = {1, 2, 3, 4, 5, 6, 7, 8...原创 2019-11-21 18:20:02 · 269 阅读 · 0 评论 -
查找_找出数组中最大的两个数
题目是这样的:"给定一个数组,输出数组和中的最大的两个数(手写)"idea要想找到数组中的极值(本例中要求最大值);是需要把所有的值都遍历过,至于遍历几遍就看怎么遍历了。针对本例中的找出最大的两个数时,我一开始的想法就是两次for循环,一次循环找出数组中的最大值,下一次循环找出数组中的次大值;叭叭叭就上代码int* find(int arr[], int length) { ...原创 2019-11-20 17:19:33 · 3982 阅读 · 5 评论 -
SelectSort(选择排序)
先上图,看图比较容易理解:第一遍选择过程:第二遍选择过程:选择全过程:过程分析 SelectSort首先在未排序数组部分中找到极值(最小/大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。【思路比较简单,看上面的演示或者下面代码就能够很好的理解了^_^】代码实现(...原创 2019-10-15 19:48:05 · 1179 阅读 · 0 评论 -
InsertSort(插入排序)
先上图,看图比较容易理解:过程分析1.选择一个元素构建一个已排好序的数组,这里为了方便选择第一个元素,(此例中黄色区域为以排好序的数组 )2.然后让未排序部分的第一个元素k与已排好序中最后一个元素sorted[i]开始比较大小: 1).如果k >= sorted[i] , k加入到已排序数组后面。 2).如果k < sorted[i] , k继...原创 2019-10-12 17:24:03 · 698 阅读 · 0 评论 -
BubbleSort(冒泡排序)
先上图,看图比较容易理解:( 一次 冒泡步骤演示)过程分析每次进行一次冒泡排序。会得到一个数组中的极值(最大或最小),这里就拿最大值来说,顺序是从前往后:1.首先第一个数组元素和第二个数组元素比较大小,假如第二个元素小于第一个元素,则交换两者位置,然后第二个元素和第三个元素比较交换,依次进行下去。知道倒数第二个元素和倒数第一个元素进行比较交换。(看演示图加深理解)2.第二次冒...原创 2019-10-12 13:44:33 · 287 阅读 · 0 评论 -
MergeSort(合并排序)
mergeSort的关键是 merge。但是一个数组怎么来merge?所以,它是分两步走的,首先它要把所给的数组分割开来,然后对分割开来的子数组进行合并。之前我们讲过快排也要分割数组,但是这里的分割数组相对简单。重点是如何将分割开来的数组合并起来先上图,看图比较容易理解:MergeSort过程分析经过我们的演示可以发现,我们的合并是沿着当初分割的原路合并的,在合并的时候将元素的大...原创 2019-10-11 18:59:08 · 8758 阅读 · 7 评论 -
QuickSort( 快速排序)
先上图,看图比较容易理解:( 一次 快排步骤演示)快排关键——分割数组以上演示给出了快排的关键:分割数组将所给的数组以pivot分为两个数组左边的数组元素都小于等于pivot 右边的数组元素都大于等于pivot注:其中的橙色连线表示数组元素交换蓝色连线表示数组元素比较大小分析过程1.快速排序中最重要的一个环节就是分割数组,将给定的数组以piv...原创 2019-10-11 10:47:12 · 229 阅读 · 0 评论 -
Hanio Tower
先上图,看图比较容易理解:idea:如果想要把x柱上面的n个盘子移到y柱上, 我们需要先把x柱子上的n-1个盘子先整体移到z柱暂存; 然后第n个盘子从x柱移到y柱上; 最后将z柱上的n-1个盘子移到y柱上。我们在把第1个过程进行拆分:1.1将x柱子上的n-2个盘从移到y柱上暂存。1.2然后第n-1个盘子从x柱移到z柱上;1...原创 2019-10-10 18:05:43 · 212 阅读 · 0 评论