java堆栈学习 想用Java学习数据结构与算法,我应该掌握Java到哪种程度?

[更新]
·
·
分类:互联网
1373 阅读

java堆栈学习

想用Java学习数据结构与算法,我应该掌握Java到哪种程度?

想用Java学习数据结构与算法,我应该掌握Java到哪种程度?

首先强调一点,数据结构和算法其实和语言没有太大关系,编程语言只是我们实现算法的工具。这里我为你整理了一份常见的你可以尝试去实现的算法清单:
链表类题目:
1. O(1)时间删除链表节点
2. 链表反转
3. 旋转单链表
4. 查到倒数第K个链表节点
5. 求链表的中间节点
6. 划分链表使得所有小于x的节点排在大于等于x的节点之前
7. 合并有序链表
8. 删除链表中的重复节点
9. 判断单链表是否有环(快慢指针)
10. 判断两个无环链表是否相交
排序算法:
1. 快速排序
2. 插入排序算法
3.选择排序
4.堆排序
5.希尔排序
6.基数排序
7.冒泡排序
8.归并排序
9.二叉树排序
10.计数排序
11.桶排序
二叉树:
1. 计算二叉树节点个数
2. 求树的最大层数(深度)
3. 最小深度
4. 二叉树的前序遍历(递归算法)
5. 二叉树非递归前序遍历
6. 二叉树中序遍历(递归)
7. 二叉树中序遍历非递归
8. 后续遍历
9. 非递归后序遍历二叉树
10. 自下而上分层遍历
11. 从上而下层次打印
12. 求第层节点个数
13. 求第层的叶子节点个数
14. 两颗二叉树是否结构相同
15. 判断是否是平衡二叉树
16. 判断是否是对称二叉树
17. 求二叉树的最低公共祖先
18. 求二叉树的长度或者直径(疑问)·
19. 路径总和II
20. 求根到叶子节点数字之和
当这些基础算法都掌握了,这个时候再去分析JDK里面用到的各种数据结构或者算法,比如说Collections类的sort是采用的什么排序方式(不止一种额,分情况有好几种);然后再尝试去分心JDK里面各种数据结构的使用场景,比如说红黑树、队列、堆栈、跳跃表之类的;最后,再去思考或者总结各种算法与数据结构最适用的场景。如果这些你都很清楚了,那么我相信你的是算法与数据结构肯定已经学的很好了。

java虚拟机是用什么语言编写的?它的原理谁能通俗的讲出来吗?

java虚拟机功能就是执行Java字节码,其编码实现就是一个死循环,每一次循环就是取字节码,执行字节码的过程,所以跟其它程序没有什么本质区别。主流的javaVM还是用C语言实现的居多,再以汇编为辅助,用java实现javaVM的情况有,但不多。
下面是一个在智能设备里用C语言实现虚拟机的片段。
这一段代码就是对short加法这个字节码的实现。
而这一段代码就是取字节码并执行,是不是觉得JavaVM也不过如此呢。
有不少人会为了优化虚拟机的效率,而选择用汇编把这些执行频度很高的代码重写一下。
总结就是C实现的多,会结合汇编作为辅助。其它语言也有,但不是主流。

走向架构师,你必须了解的Java虚拟机高级特性
链接: 密码: iayw
看完了你就知道Java虚拟机了 不要谢我 、
对了
记得点赞关注一下我头条号Java分布式