
算法与数据结构
文章平均质量分 90
记录学习过程中学习的算法和数据结构的一些相关知识
程序届的胖头鱼
打工人,程序猿
展开
-
数据结构学习 —— 二叉树(二叉排序、AVL平衡二叉树C#实现)
二叉树 每个节点最多有两颗子数; 左右子树有序,不能颠倒 即使某个节点中只有一颗子树,也要区分是左右;如上图所示:节点C是节点A的右子树,节点F是节点C的右子树。 特殊的二叉树: 1、斜树:所有节点都只有左子节点或都只有右子节点 2、满二叉树:在一颗二叉树中,所有的分支节点都存在左子树和右子树,并且所有叶子节点都在同一层,这样的二叉树称为满二叉树。 3、完全二叉树:对一颗具有n个结点的二叉树按层序编号,如果编号为i(1<=i<=n)的节点同样深度的满二叉树中编号为i的节点在二叉树中的位置完原创 2021-01-07 15:45:22 · 379 阅读 · 0 评论 -
经典算法学习——串的模式匹配
在刷题时有一道很经典的题型:从输入的字符串中,找出给定的子字符串的位置。列如:在字符串 “god is good” 中找出 “good” 的位置。 暴力循环——朴素的模式匹配算法 不考虑任何优化和性能,我们直接挨个遍历主串和子串(双重循环),依次检查每个字符是否相等,只要输入正确,就一定能检查。 ...原创 2020-12-28 17:27:20 · 450 阅读 · 0 评论 -
算法学习 —— N*N型螺旋矩阵输出
刷LeetCode题时做到的一到题(曾经面试一家大型互联网公司时遇到过),给定数N,输出他的螺旋矩阵,列如: 如:NUM=3 NUM=4 01 08 07 01 12 11 10 02 08 06 02 13 16 09 03 04 05 03 14 15 08 04 05 06 07 其实这道题如果准确的发现了螺旋矩阵的规律问题也就迎刃而解了,找到关键的拐点,按照螺旋的顺序依次将二维数组中的值填原创 2020-11-24 11:11:05 · 1916 阅读 · 0 评论 -
算法学习—— 简单的排序算法
冒泡排序 冒泡排序是最简单的排序算法,基本思路如下: 比较两个数据项 交换两个数据项,如果左边的数据项大,则交换 向右移动位置重复1、2步骤public void NormalSort(int[] arr) { for(int i=0;i<arr.Length-1;i++) //确定冒泡比较的趟数 { bool finish=true; fo...原创 2019-08-29 11:17:38 · 151 阅读 · 0 评论 -
算法学习——递归算法
递归算法算法的主要思想:把问题转化为缩小了的同类问题的子问题,然后递归调用函数(或过程)来表示问题的解。 递归算法:在函数或者过程的内部,直接或间接地调用自己的算法。 递归算法的特点 递归就是在过程或函数里调用自身 在使用递归策略时,必须要有一个明确的递归结束条件,成为递归出口 递归算法解题通常显得很简洁,但递归解题的运行效率低,所以一般不提倡使用递归算法设计程序 在递归调用的过程中系统每一层的...原创 2019-08-29 15:58:02 · 652 阅读 · 0 评论 -
算法学习——折半查找(二分查找法)
在有序表中,把待查找的数据值与查找范围的中间元素值进行比较,根据比较结果来确定查找结束或者下一轮查找时在中间元素左边查找还是中间元素的右边查找 ``` public int BinarySerach(int[] arr,int number) { int left=0; int right=arr.Length;//初始化左右边界 int middle=(left+righ...原创 2019-08-29 16:32:46 · 316 阅读 · 0 评论