数据结构与算法
JAVA 为主的 数据结构与算法
ZhongJinHacker-
这个作者很懒,什么都没留下…
展开
-
排序算法分类
排序分类 内部排序:指将所有数据加载到内存中进行排序 插入排序:1.直接插入排序 2.希尔排序 选择排序:1.简单选择排序 2.堆排序 交换排序:1.冒泡排序 2.快速排序 归并排序 基数排序 外部排序:内存 + 磁盘 时间频度 介绍: 一个算法花费的时间与算法中语句执行的次数成正比例。哪个算法中语句执行次数越多,它话费的时间就多。一个算法中的语句执行次数成...原创 2020-03-04 09:03:43 · 105 阅读 · 0 评论 -
冒泡排序
冒泡排序规则 一共继续数组大小-1次的循环 每一趟排序的次数逐渐减小 每次都走一遍,不断交换,选出最大的值 public void bubboSort(int[] arr) { // 一共执行数组长度次 for (int i = 0; i < arr.length; i++) { // 每次执行次数比上次少1,因为...原创 2020-03-02 08:54:16 · 104 阅读 · 0 评论 -
约瑟夫算法问题
题目描述 n 个人围成一圈,从第一个人开始报数,数到 m 的人出列,再由下一个人重新从 1 开始报数,数到 m 的人再出圈,依次类推,直到所有的人都出圈,请输出依次出圈人的编号。 输入格式 输入两个整数 n,m。 输出格式 输出一行 n 个整数,按顺序输出每个出圈人的编号 1≤m,n≤1001\leq m, n \leq 1001≤m,n≤100 样例 输入10 3; 输出3 6 9 2 7 1...原创 2020-03-01 12:36:24 · 269 阅读 · 0 评论 -
单链表反转
分别用递归和循环两种方式实现 public class ListNode { int num; ListNode next; } // 循环反转 public ListNode reverseList(ListNode head) { if (head == null || head.next == null) { return head; } ListNode fi...原创 2020-02-29 08:53:52 · 407 阅读 · 0 评论 -
从尾到头打印单链表
两种解法: 递归 循环 public class ListNode { int num; ListNode next; } // 递归方式 public void reversePrintList(ListNode node) { if (node == null) return; reversePrintList(node.next); System.out.print...原创 2020-02-28 08:20:30 · 88 阅读 · 0 评论 -
求单链表节点个数
这里用两种方式来解决 递归 循环 public class ListNode { int num; ListNode next; } // 递归方式 public int getSingleLinkedListNodeCount(ListNode node) { if (node == null) return 0; if (node.next == null) return...原创 2020-02-27 08:30:24 · 4385 阅读 · 0 评论 -
JAVA数据结构与算法——环形队列
队列介绍 队列是一个有序列表,可以用 数组 或 链表 来实现 先进先出(FIFO),即先存入队列的数据,会先取出。后存入的数据后取出 数组实现环形队列 实现原理 定义两个指示器,一个指示器front数组记录第一个有效元素的位置;一个指示器tail记录最后一个有效原始的位置的后一位; 实际申请空间为 maxSize + 1(赋予成员变量maxSize);多出的这一空间作为留白,即tail指示的...原创 2020-02-23 17:45:22 · 167 阅读 · 0 评论 -
JAVA数据结构与算法——稀疏数组
稀疏数组 当一个数据中大部分元素都是0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。 稀疏数组的处理方法是: 记录数组一共有几行几列和一共有多少个值 把具有不同过值的元素的行列及值记录在一个小规模的数组中,从而起到缩小数据大小的规模的作用。 比如:棋盘位置问题 0000000000 0012000000 0001200000 0000120000 0000000000 0000000...原创 2020-02-21 08:51:24 · 130 阅读 · 0 评论