当前位置:网站首页 > Java基础 > 正文

java基础算法大全



目录

1.Java多线程:写一下两个线程交替打印 0~100 的奇偶数

2.线程安全的单例模式

3.用两个栈实现队列

4.实现单链表反转操作

5.Java实现二分查找

6.冒泡排序

7.快速排序

快速排序的基本思想:

8.Java单链表实现快速排序

9.二叉树的前序遍历

10.二叉树的中序遍历

11.二叉树的后序遍历

12.java实现逆波兰表达式

13.斐波那契数列及青蛙跳台阶问题


1.Java多线程:写一下两个线程交替打印 0~100 的奇偶数

这种实现方式的原理就是线程1打印之后唤醒其他线程,然后让出锁,自己进入休眠状态。因为进入了休眠状态就不会与其他线程抢锁,此时只有线程2在获取锁,所以线程2必然会拿到锁。线程2以同样的逻辑执行,唤醒线程1并让出自己持有的锁,自己进入休眠状态。这样来来回回,持续执行直到任务完成。就达到了两个线程交替获取锁的效果了。

 

2.线程安全的单例模式

双锁判断机制创建单例模式

 

3.用两个栈实现队列

解题思路
两个栈stack1和stack2 。
开始时,每次添加队尾元素到stack1中。
如果需要弹出队头元素,则将stack1中的元素弹出并push到stack2中,再将stack2的栈顶元素弹出,即为弹出了队头元素。
如果stack2中是非空的,再在队尾中添加元素的时候仍然加到stack1中,从stack2中弹出队头元素。
只有当stack2为空的时候,弹出队头元素才需要将stack1中的元素转移到stack2中。

 

4.实现单链表反转操作

 单链表是一种常见的数据结构,由一个个节点通过指针方式连接而成,每个节点由两部分组成:一是数据域,用于存储节点数据。二是指针域,用于存储下一个节点的地址。在Java中定义如下:

 
 

5.Java实现二分查找

二分查找又称折半查找,查找效率不错

适用场景:顺序存储结构且按有序排列,这也是它的缺点。

 

6.冒泡排序

N个数字要排序完成,总共进行N-1趟排序,每i趟的排序次数为(N-i)次,所以可以用双重循环语句,外层控制循环多少趟,内层控制每一趟的循环次数,即

 

用时间复杂度来说:

  1.如果我们的数据正序,只需要走一趟即可完成排序。所需的比较次数C和记录移动次数M均达到最小值,即:Cmin=n-1;Mmin=0;所以,冒泡排序最好的时间复杂度为O(n)。

  2.如果很不幸我们的数据是反序的,则需要进行n-1趟排序。每趟排序要进行n-i次比较(1≤i≤n-1),且每次比较都必须移动记录三次来达到交换记录位置。在这种情况下,比较和移动次数均达到最大值:

冒泡排序的最坏时间复杂度为:O(n2) 。

综上所述:冒泡排序总的平均时间复杂度为:O(n2) 。

7.快速排序

快速排序的基本思想:

 
 

8.Java单链表实现快速排序

单链表的实现为:
(1)使第一个节点为中心点
(2)创建2个指针(p,q),p指向头结点,q指向p的下一个节点
(3)q开始遍历,如果发现q的值比中心点的值小,则此时p=p->next,并且执行当前p的值和q的值交换,q遍历到链表尾即可
(4)把头结点的值和p的值执行交换。此时p节点为中心点,并且完成1轮快排
(5)使用递归的方法即可完成排序

 

9.二叉树的前序遍历

  前序遍历(DLR,lchild,data,rchild),是二叉树遍历的一种,也叫做先根遍历、先序遍历、前序周游,可记做根左右。前序遍历首先访问根结点然后遍历左子树,最后遍历右子树。

 

10.二叉树的中序遍历

中序遍历(LDR)是 二叉树遍历 java基础算法大全的一种,也叫做 中根遍历、中序周游。在二叉树中,先左后根再右。巧记:左根右。

 

11.二叉树的后序遍历

后序遍历(LRD)是 二叉树遍历的一种,也叫做 后根遍历、后序周游,可记做左右根。后序遍历有 递归算法和非递归算法两种。在二叉树中,先左后右再根。巧记:左右根。

 

12.java实现逆波兰表达式

逆波兰表达式把运算量写在前面,把算符写在后面。

 

13.斐波那契数列及青蛙跳台阶问题

递归方式:

 

非递归:


                            

  • 上一篇: java笔试基础题
  • 下一篇: java基础69讲
  • 版权声明


    相关文章:

  • java笔试基础题2025-04-04 10:50:04
  • java基础银行存取款2025-04-04 10:50:04
  • java基础继承题2025-04-04 10:50:04
  • java运维基础2025-04-04 10:50:04
  • java基础补贴2025-04-04 10:50:04
  • java基础69讲2025-04-04 10:50:04
  • java基础重难点2025-04-04 10:50:04
  • java基础.txt2025-04-04 10:50:04
  • java基础语法教程2025-04-04 10:50:04
  • java基础篇反射2025-04-04 10:50:04