![](https://img-blog.csdnimg.cn/20200523160339690.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构与算法
以Java为编程语言,记录在数据结构与算法学习方面的一些心得与总结。
Hitmi_
一个在程序猿路上砥砺前进的新人
展开
-
神奇的二进制转换和运算
介绍十进制和二进制的转换、位运算和常用位运算操作原创 2021-12-12 16:52:34 · 1189 阅读 · 0 评论 -
基于邻接矩阵的无向图
存储结构:arc[][]存放边,vertex[]存放顶点信息,visited[]作为是否被访问的标志数组vertexNum存放顶点数,arcNum存放边数功能:1.基于邻接矩阵的无向图的构建2.深度优先遍历3.广度优先遍历伪代码:构建:1.初始化标志数组2.输入顶点数、边数、顶点信息、边的信息3.初始化arc、vertex深度优先遍历(栈)1.输出一个顶点v并将其标志为已遍历2.递归操作 将顶点...原创 2018-07-15 10:57:40 · 962 阅读 · 1 评论 -
基于邻接表的无向图实现
存储结构:ArcNode 边表节点数据结构(包含索引值vertex和next)VertexNode 顶点表节点数据结构(包含顶点数据和第一个边表节点firstEnde)adjlist[] 顶点表节点数组vertexNum 顶点数arcNum 边数visited[] 标志数组功能:1.构建基于邻接表的无向图2.深度优先遍历3.广度优先遍历伪代码:构建1.标志数组初始化2.顶点表节点数组初始化赋值3....原创 2018-07-15 11:26:46 · 1581 阅读 · 0 评论 -
C语言中递归的原理
最近在学数据结构的二叉树,里面的实现好多都是递归。博主大一上学期也没有认真学递归,结果就好多不懂。今天特别请教了班上搞ACM的,再上网猜了一些资料才算初步弄懂递归的实现原理。递归的底层实现其实是栈,而栈是先进后出的(即先入栈的反而后出栈(类似水瓶中放物取物))下面是一段阶乘递归的案例代码#include<stdio.h>//一个求阶乘的递归算法int f(int n){ ...原创 2018-05-06 22:54:06 · 2676 阅读 · 4 评论 -
三角形的判断条件
if(a+b<c||a+c<b||b+c<a)不能构成三角形if(a+b>c&&a+c>b&&b+c>a)能构成三角形原创 2018-11-08 19:43:46 · 13219 阅读 · 4 评论 -
得知道的快速排序
1.概述在找实习的多次面试中,在数据结构与算法的面试题中,手写快排就跟计算机网络的三次握手一般是被问烂了也肯定得会的知识点(千万别以为被问烂了就不会被问到,在面腾讯提前批一面的时候最后就用腾讯文档手写了快排,只有简单的玩熟练了才能有机会去展示那些“深奥”的)。快排的思想简单,实现的代码却各异,且可能稍有不同就满盘皆崩。2.快排的思想快排采用的是分治的思想。快速排序(Quick Sort)是对冒泡排序的一种改进,基本思想是选取一个记录作为枢轴,经过一趟排序(更应该说是划分Partition)将整段原创 2020-07-11 23:31:07 · 389 阅读 · 0 评论 -
得知道的时间复杂度计算
1. 概述从大一到大三,迷迷糊糊看了时间复杂度三年多,今天终于把它搞清楚了。首先,我们需要知道的是 时间复杂度要计算的是一个程序大致执行了多少个语句(之前我认为是要计算到底执行了多少秒,是我天真了,怎么可能了),时间复杂度的计算允许省去一些影响小的因素(比如说后面会提到的n对n2的影响小,这时我们就只要考虑n2就行)。2. 时间复杂度的计算步骤关于时间复杂度的计算可以分为三类:简单由执行次数得到时间复杂度通过分析和数学运算得到时间复杂度递归算法的时间复杂度2.1 简单由执行次数得到时间复原创 2020-05-23 16:10:17 · 504 阅读 · 0 评论