mtgo666
mtgo666
全部文章
基础算法
Linux学习笔记(10)
STL(7)
学习笔记(10)
题解(26)
归档
标签
去牛客网
登录
/
注册
mtgo666的博客
全部文章
/ 基础算法
(共9篇)
递归建立二叉树
来自专栏
1、简言 最近秋招面试,发现有的公司考察二叉树方面的算法题时需要自己建立二叉树,因此写一下建立二叉树的步骤回忆一下。 2、思路 首先需要写出二叉树的结点结构: struct TreeNode{ int val; TreeNode *left; TreeNode *right;...
C++
二叉树
2022-08-17
0
576
二叉树的遍历(递归)
来自专栏
1、思路 由于二叉树的结构本身就是递归的,所以其很多操作都可以递归的实现。比如三种遍历操作。比如对于先序遍历,我们只需要先访问其根节点,再递归的访问左右子树即可。 2、二叉树结点结构 /* struct TreeNode { int val; struct TreeNode *left; st...
C++
二叉树
2022-03-10
0
482
基础算法——归并排序
来自专栏
算法思想 归并排序的核心就在于“归”和:“并”。其是一种采用分治策略来求解问题的典型算法。其算法思想十分简单: 分:确定分界点:mid=(l+r)/2; 将分的两个子序列递归调用归并排序进行排序。 治:将两个子序列合并成一个有序序列。 上述图片链接 代码实例 //归并排序 /* 思路:...
C
#归并排序
#分治法
2022-03-01
0
447
谈谈i++和++i
来自专栏
两者区别 赋值顺序不同:++ i 是先加后赋值;i ++ 是先赋值后加;++i和i++都是分两步完成的。 效率不同:后置++执行速度比前置的慢。 i++ 不能作为左值,而++i 可以: int* p1 = &(++i);//正确 // int* p2 = &(i++);//错误 ...
# 算法
2022-02-28
0
456
基础算法——选择排序
来自专栏
1、选择排序简介 其基本思想十分简单:每趟排序在当前待排序序列中选出关键字最小的记录,添加到有序序列中。选择排序的方法主要包括简单选择排序和堆排序。 2、简单选择排序 简单选择排序是选择排序中最简单的一种排序方法。其思想就是把给定序列分为一个有序序列和待排序序列,然后每一趟在待排序序列中选出一个最...
#选择排序
#堆排序
2022-02-28
0
474
基础算法——递归
来自专栏
算法思想 递归(recursion algorithm):在计算机科学中是指一种通过重复将问题分解为同类的子问题而解决问题的方法。也可以说递归就是在函数定义中再调用自身的做法。好了,虽然其算法思维很简单,但是要使用起来却是很困难。有时候一个递归的算法光是理解起来就很难。(大师 L.Peter Deu...
#递归
2022-02-27
1
608
基础算法——二分查找
来自专栏
1、算法思想 二分查找的思想很简单。假设有一个非降序的数据集合。先找出集合中最中间的那个元素,将数据集分割成两个子集。将最中间的元素和关键字key比较,如果等于key就返回,如果大于key,就证明key在前一个子集中,否则就在后一个子集查找,直到找到key返回。若没有找到返回-1。 二分查找只适用...
C++
#二分查找
2022-02-26
0
449
基础算法——快速排序
来自专栏
1、算法思想 快速排序是一种基于分治策略的排序思想,分治法的思想:将原问题分解为若干个规模更小但结构与原问题相似的子问题。递归地解这些子问题,然后将这些子问题的解组合为原问题的解。而快排的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分比令一部分的所有数据都要小。然后按照同样的方...
C
#快速排序
2022-02-25
0
748
基础算法——冒泡排序
来自专栏
1、思想 它的基本思想是对所有相邻记录的关键字值进行比效,如果是逆顺(a[j]>a[j+1]),则将其交换,最终达到有序化; 其处理过程为: 将整个待排序的记录序列划分成有序区和无序区,初始状态有序区为空,无序区包括所有待排序的记录。 对无序区从前向后依次将相邻记录的关键字进行比较,若逆序将...
C
#冒泡排序
2022-02-25
0
627