![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
ChayWong
。。。
展开
-
排序算法之直接插入排序
时间复杂度:平均O(n²) 最好O(n) 最坏O(n²)空间复杂度:O(1)稳定性:稳定特点:大部分已有序时较好public class InsertSort { public static void main(String[] args) { int[] a = { 2, 7, 8, 3, 1, 6, 9, 0, 5, 4 }; insertSort(a);原创 2015-10-21 09:55:03 · 312 阅读 · 0 评论 -
单链表之反转链表
重点是链表断开后要保存next指针package me.wcy.j2se.datastructure;/** * 反转链表 * * @author wcy * */public class ReverseList { public static void main(String[] args) { ListNode node5 = new ListNode(5);原创 2015-10-22 08:36:01 · 277 阅读 · 0 评论 -
用两个队列实现一个栈
1.如栈时,将元素放入队列q12.出栈时,先将q1中所有元素出队列并放入队列q2,保留q1中最后一个元素,将其输出;然后将q2中所有元素出队列并放回q1package me.wcy.j2se.datastructure;import java.util.LinkedList;import java.util.Queue;/** * 两个队列实现一个栈 * * @autho原创 2015-10-22 08:32:16 · 303 阅读 · 0 评论 -
用两个栈实现一个队列
1.入队列时,将元素放入栈s12.出队列时,如果s2不为空,则直接将s2栈顶元素出栈;如果s2为空,则将s1所有元素出栈并放入s2,最后将s2栈顶元素出栈package me.wcy.j2se.datastructure;import java.util.Stack;/** * 两个栈实现一个队列 * * @author chenyan.wang * * @param原创 2015-10-22 08:27:59 · 324 阅读 · 0 评论 -
二叉树之层序遍历二叉树
1.定义一个队列,并将根结点入队列2.从队列中取出结点输出,如果该结点有子结点,则按左右顺序将子节点如队列3.循环步骤2,直到队列为空package me.wcy.j2se.datastructure;import java.util.LinkedList;import java.util.Queue;/** * 层序遍历二叉树 */public class Lay原创 2015-10-22 08:57:48 · 475 阅读 · 0 评论 -
单链表之检测链表是否有环并找出环的入口点
1.检测链表是否有环定义两个指针,快指针一次走两步,慢指针一次走一步,如果两个指针相遇,说明链表存在环如果快指针走到尾部,则不存在环2.找出环的入口点两个指针相遇后,记录下相遇的位置,慢指针继续走,直到再次走到相遇点,可计算出环的大小n重新定义两个指针,指针1先走n步,指针2开始走,两指针相遇点即为环的入口点package me.wcy.j2se.datastructure原创 2015-10-22 08:49:03 · 456 阅读 · 0 评论 -
HashMap+双向链表实现LRUCache
package me.wcy.j2se.datastructure;import java.util.HashMap;public class MyLRUCache { public static void main(String[] args) { MyLRUCache cache = new MyLRUCache(3); cache.put(1, 1); System.原创 2015-10-22 09:00:40 · 1133 阅读 · 0 评论 -
二叉树之实现排序二叉树
package me.wcy.j2se.datastructure;/** * 排序二叉树 * * @author chenyan.wang * */public class BinaryTree { public static void main(String[] args) { BinaryTree biTree = new BinaryTree(); int[]原创 2015-10-22 08:51:44 · 625 阅读 · 0 评论 -
排序算法之冒泡排序
时间复杂度:平均O(n²) 最好O(n) 最坏O(n²)空间复杂度:O(1)稳定性:稳定特点:n小时较好public class BubbleSort { public static void main(String[] args) { int[] a = { 2, 7, 8, 3, 1, 6, 9, 0, 5, 4 }; bubbleSort(a); for原创 2015-10-21 09:56:45 · 397 阅读 · 0 评论 -
排序算法之快速排序
时间复杂度:平均O(nlogn) 最好O(nlogn) 最坏O(n²)空间复杂度:O(logn)稳定性:不稳定特点:n大时较好public class QuickSort { public static void main(String[] args) { int[] a = { 2, 7, 8, 3, 1, 6, 9, 0, 5, 4 }; quickSort(a原创 2015-10-21 09:59:55 · 359 阅读 · 0 评论 -
排序算法之归并排序
时间复杂度:平均O(nlogn) 最好O(nlogn) 最坏O(nlogn)空间复杂度:O(n)稳定性:稳定特点:n大时较好public class MergeSort { public static void main(String[] args) { int[] arr = { 2, 7, 8, 3, 1, 6, 9, 0, 5, 4 }; sort(arr,原创 2015-10-21 10:04:56 · 287 阅读 · 0 评论 -
排序算法之简单选择排序
时间复杂度:平均O(n²) 最好O(n²) 最坏O(n²)空间复杂度:O(1)稳定性:不稳定特点:n小时较好public class SelectSort { public static void main(String[] args) { int[] a = { 2, 7, 8, 3, 1, 6, 9, 0, 5, 4 }; selectSort(a); fo原创 2015-10-21 09:52:03 · 310 阅读 · 0 评论 -
单链表之在不知道头指针的情况下删除指定结点
满足的情况:要删除的结点不是尾结点package me.wcy.j2se.datastructure;/** * 在不知道头指针的情况下删除指定结点 * * @author wcy * */public class DeleteNode { public static void main(String[] args) { ListNode node5 = new Li原创 2015-10-22 08:39:34 · 1195 阅读 · 1 评论