数据结构和算法
文章平均质量分 66
学习数据结构中我认为重要的东西和基础算法在写代码中需要注意的东西,希望和诸君共勉,也希望自己在回看时会有新的见解和思考!
DaKong112
这个作者很懒,什么都没留下…
展开
-
七、查找算法
既然有序表的长度 = 斐波拉契数的值了,那你直接就另中间值为f(n-1)那不就越界了吗,数组下标最大本来是5,但是你用的是数组长度来表明下标那就是6,这不就错了吗!有的人可能会说,那变为 f(n-1) -1 这么做也是可以的,但是不是最好,最好是直接将上面的推导式变为f(n)-1的格式那不就完事儿了吗!这里再提醒一下 , ok,既然f(n) 是斐波拉契数,也就是有序表的长度啊,所以这个公式不就可以帮助我们把有序表分成两段吗,而且这个公式是斐波拉契数列的推到公式啊,那不就满足了黄金分割率吗,恍然大悟!原创 2023-12-11 01:30:00 · 1664 阅读 · 1 评论 -
八、哈希表(散列表)
哈希表需要记住由三个类构成,一个是暴露给用户的HashTable类,一个是HashTable中的每一个元素链表类,第三个是存放数据的data类。//存放头节点,默认为空。data next;//存放下一个节点地址。Object key;映射函数(散列函数)原创 2023-12-11 02:00:00 · 279 阅读 · 1 评论 -
九、树类相关算法
特别注意二叉树的删除是单向的,所以在删除的时候必须首先找到他的父节点,然后再父节点进行判断子节点是不是要删除的元素,如果是就在父节点位置进行删除;还有一点需要注意,那就是root需要首先进行判断,这是为了防止如果要删除的是root就需要在外面直接将root置空,,,,,,在里面的递归就直接传入root进行左右递归就行。二叉排序树就是将二叉树按照一定顺序进行构建,比父节点小的放在父节点左边,比父节点大的放在父节点右边,最终构成一颗根节点左侧所有值都小于根节点值,右侧都大于根节点值的二叉树叫做二叉排序树。原创 2023-12-11 02:30:00 · 1445 阅读 · 1 评论 -
六、八种主流排序算法
这里面传入的list是原数组,而left和right其实也都是指向原数组中的下标,并没有说真的传入两个有序的数组,只是在思想上借助left和mid两个下标将原数组分为了left~mid,mid+1~right两个数组,其实还是在原数组中(借助中转数组)进行操作的。学到此处我已黔驴技穷,有种世界与我无关的感觉,去他妈的算法,这是人学的吗?上面这张图就是对归并排序的图解,想分成若干子数组,直到剩下最后一个元素停止分,然后向上并,每次并得的新数组都是一个有序表,直到最后合并为一个数组,则整个数组都是有序的。原创 2023-12-10 21:05:46 · 715 阅读 · 1 评论 -
十、图-类算法
图 --- 会为不存在的边也会分配空间 浪费内存通过数组+链表构成 只为存在的边分配内存。原创 2023-12-12 00:00:00 · 728 阅读 · 0 评论 -
【无标题】
八大排序算法个人理解原创 2023-10-22 12:21:30 · 55 阅读 · 1 评论 -
五、数据结构之递归
抽象理解 理解递归不要从全局理解,只想某一次调用它需要做什么 比如阶乘递归: 我第三次调用递归时我只需要考虑我现在需要的是第四次递归的结果帮助我完成 ,没有它我完成不了我的任务 而不去想整体是在干嘛,时 ,要明确递归退出条件是到第九个皇后时就退出,进行递归时每次调用递归都会进行8次循环,确定出皇后的位置;的方法时,一定要明确此方法只是为了判断当前皇后能否放置在某处,他只是用来做判断的,不会改变皇后的位置。在计算机内部调用递归会将每一次调用递归方法放入栈中,直到满足退出条件才从栈顶依次销毁并回归。原创 2023-08-05 22:22:29 · 99 阅读 · 1 评论 -
四、对于计算机内存的理解
这里计算机硬件中CPU有个寄存器,寄存器也是存储器的一种 ,寄存器主要用来暂存指令,位址,和数据,是一种有限的高速存储部件;栈区是编译器自主分配的一块变量存储区域,需要时就创建,不需要时就销毁,全程由编译器自主控制,栈的特点是先进后出且是一块连续的存储地址空间,所以它的地址分配是由高到低。,当程序没有启动时,是安装在ROM中的,当你运行时系统会将程序拷贝到RAM,在RAM中去执行代码,所以执行代码关键在RAM中。CPU寄存器执行命令是一些变量基本都会存放在Cache中,需要的时候都会先从Cache中去取,原创 2023-05-11 06:00:00 · 137 阅读 · 0 评论 -
三、栈(stack)
堆栈学习原创 2023-05-11 01:00:00 · 63 阅读 · 0 评论 -
二、链表(单向环形链表)
链表 单向循环链表原创 2023-05-10 18:00:00 · 80 阅读 · 0 评论 -
一、环形队列
注意:这里的队列有效长度为存储长度-1意思并不是指的数组最后一个下标元素不能存放数据,而是指的是在整个队列中始终只能存放4个元素,因为循环队列中设置的判断队列是否满的条件是:(rear + 1)% maxLength == head。那就是这个尾部rear可以跑到头部的前面啊,因为这是一个环形队列,当有数据弹出时,队列前面的位置就空出来了,此时如果再想插入数据就必须把尾部移到队列前面去。环形队列重要算法----------------取模运算。明确环形队列中能存储数据的长度为。搞清楚队列中的有效数据。原创 2023-05-10 14:00:00 · 194 阅读 · 0 评论