
Java
Java编写
Ben_ming
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
堆排序
堆排序升序->大顶堆降序->小顶堆步骤(1)构造堆(2)取下堆顶值,继续构造堆(3)循环(2)直到堆中剩下最后一个元素,排序完成构造堆举例 构造大顶堆找到最后一个非叶子节点的下标,arr.length/2-1从右往左,从下往上,构造大顶堆第一轮第二轮第三轮(1)拿到索引节点的值,存到temp中,比较索引节...原创 2020-01-03 15:35:40 · 211 阅读 · 0 评论 -
二叉树的遍历(递归与非递归)
二叉树的遍历1.前序遍历根左右非递归法箭头序号对应访问步骤打印结果:A B D E C F/** * 前序遍历 - 递归 * @param treeNode */ public static void rePreOrderTraversal(TreeNode treeNode) {...原创 2020-01-02 22:31:42 · 259 阅读 · 0 评论 -
哈希表
哈希表散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。哈希表 = 数组 + 链表哈希表 = 数组 + 二叉树google 公司的一个上机题有一个公司,当有新的员工来报道时,要求将该员工的信息...原创 2020-01-01 19:59:58 · 399 阅读 · 1 评论 -
二分查找与插值查找
一、二分查找(折半查找)思路考虑数组中可能有等值元素二、插值查找介绍插值查找算法: 插值查找算法类似于二分查找,不同的是插值查找每次从自适应 mid 处开始查找插值索引:int mid = low + (high - low) * (key - arr[low]) / (arr[high] - arr[low]) ;对比1) 对于数据量较大,关键字分布比较均匀的...原创 2019-12-31 17:13:47 · 667 阅读 · 1 评论 -
栈
栈(FILO)栈的介绍1) 栈的英文为(stack)2) 栈是一个先入后出(FILO-FirstInLastOut)的有序列表。3) 栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)。4) 根据栈的定义可知,最先放入栈中元素在栈...原创 2019-12-31 09:19:08 · 226 阅读 · 0 评论 -
Josephu(约瑟夫) 问题
Josephu 问题:设编号为 1,2,... n 的 n 个人围坐一圈,约定编号为 k(1<=k<=n)的人从 1 开始报数,数到 m 的那个人出列,它的下一位又从 1 开始报数,数到 m 的那个人又出列,依次类推,直到所有人出列为止,由此 产生一个出队编号的序列。生活中的问题:丢手绢问题,小孩出圈问题,猴子选大王问题(https://blog.youkuaiyun.com/Ben_m...原创 2019-12-30 15:23:21 · 470 阅读 · 1 评论 -
双向链表
双向链表插入删除代码package com.linkedlist;import java.util.Scanner;/** * @program: DataStructures * @description: 双向链表 * @author: XuDeming * @date: 2019-12-29 16:45:30 **/public class D...原创 2019-12-29 22:17:44 · 127 阅读 · 0 评论 -
单链表
单链表插入与删除反转代码实现package com.linkedlist;import java.util.Scanner;import java.util.Stack;/** * @program: DataStructures * @description: 单链表 * @author: XuDeming * @date: 2019-12-28 00...原创 2019-12-29 16:40:01 · 146 阅读 · 0 评论 -
队列与循环队列(数组实现)
队列:FIFO一、普通队列问题分析并优化1) 目前数组使用一次就不能用, 没有达到复用的效果2) 将这个数组使用算法,改进成一个环形的队列 取模:%二、循环队列数组得到复用package com.queue;import java.util.Scanner;/** * @program: DataStructures * @description:...原创 2019-12-27 23:49:41 · 251 阅读 · 0 评论 -
稀疏数组
稀疏数组当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。稀疏数组的处理方法是:1)记录数组一共有几行几列,有多少个不同的值2)把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模二维数组<-->稀疏数组<-->磁盘代码实现package com.sparsearray;import ...原创 2019-12-26 23:38:14 · 137 阅读 · 0 评论 -
15只猴子循环报数找大王
15个猴子围成一圈选大王,依次1-7循环报数,报到7的猴子被淘汰,直到最后一只猴子成为大王。问:哪只猴子会成为大王?原创 2019-08-29 08:59:26 · 586 阅读 · 0 评论 -
TCP:文件传输
服务端代码客户端代码原创 2019-08-27 23:26:35 · 1144 阅读 · 0 评论 -
TCP:信息的发送与接收
TCP和“三次握手” TCP协议是面向连接的通信协议,即在传输数据前先在发送端和接收端建立逻辑连接,然后再传输数据,它提供了两台计算机之间可靠无差错的数据传输。在TCP连接中必须要明确客户端与服务器端,由客户端向服务端发出连接请求,每次连接的创建都需要经过“三次握手”。第一次握手客户端向服务器端发出连接请求,等待服务器确认,第二次握手,服务器端向客户端回送一个响应,通知客户端收到...原创 2019-08-27 21:47:58 · 873 阅读 · 0 评论 -
UDP:单人聊天
import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.net.SocketException;import java.util.Scanner;public c...原创 2019-08-27 20:14:06 · 190 阅读 · 0 评论 -
UDP:信息的发送与接收
UDP UDP是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接。简单来说,当一台计算机向另外一台计算机发送数据时,发送端不会确认接收端是否存在,就会发出数据,同样接收端在收到数据时,也不会向发送端反馈是否收到数据。 由于使用UDP协议消耗资源小,通信效率高,所以通常都会用于音频、视频和普通数据的传输例如视频会议都使用UDP协议,因为这种情况即使...原创 2019-08-26 22:43:35 · 1592 阅读 · 0 评论 -
等待唤醒机制:生产者与消费者
public class TestPractice2 { /* * 线程等待唤醒机制:生产者与消费者 * 生产者和消费者轮流生产和消费 * 生产者每次生产的产品数量+剩余的产品数量不能大于1000 * 消费者每次消费不能超过剩余产品数量 */ public static void main(String[]...原创 2019-08-24 20:33:04 · 225 阅读 · 0 评论 -
等待唤醒机制:两个学生轮流自我介绍
public class TestWaitNotify { //两个学生轮流自我介绍 public static void main(String[] args) { //创建学生 Student student = new Student(); student.setName("小明");...原创 2019-08-24 16:56:19 · 247 阅读 · 0 评论 -
死锁:打印机和扫描仪
死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。举例:打印机和扫描仪T1和T2是两个用户R1和R2是打印机和扫描仪public class TestDeadLock { //共享的打印机和...原创 2019-08-24 11:54:50 · 607 阅读 · 0 评论 -
第一个多线程小Demo
public class TestRePtactice { // 多线程:三个窗口卖同时卖同一种票(100张) // 三个线程一个对象 public static void main(String[] args) { Ticket ticket = new Ticket(); //...原创 2019-08-23 21:43:21 · 386 阅读 · 0 评论