随笔分类 - 数据结构java版
摘要:分阶段可以理解为就是递归拆分子序列的过程 治阶段,我们需要将两个已经有序的子序列合并成一个有序序列,比如上图中的最后一次合并,要将[4,5,7,8]和[1,2,3,6]两个已经有序的子序列,合并为最终序列[1,2,3,4,5,6,7,8]
阅读全文
摘要:快速排序(Quicksort)是对冒泡排序的一种改进。 基本思想: 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 实例解释: 1.先从数列中取出
阅读全文
摘要:希尔排序法基本思想: 把记录按下标的一定增量分组,对每组使用直接插入排序算法排序; 随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个记录恰被分成一组,算法便终止
阅读全文
摘要:基本思想: 把n个待排序的元素看成为一个有序表和一个无序表, 开始时有序表中只包含一个元素,无序表中包含有n-1个元素, 排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较, 将它插入到有序表中的适当位置,使之成为新的有序表。 缺点: 当需要插入的数是较小的数时,后
阅读全文
摘要:import java.util.Arrays; /** * 选择排序 * 基本思想是: * 第一次从arr[0]~arr[n-1]中选取最小值,与arr[0]交换, * 第二次从arr[1]~arr[n-1]中选取最小值,与arr[1]交换, * 第三次从arr[2]~arr[n-1]中选取最小值,与arr[2]交换,…, * 第i次从arr[i-1]~arr[n-1]...
阅读全文
摘要:小结: (1)相邻的元素逆序就交换,一个进行了数组大小-1趟循环 (2)每一趟排序的次数在逐渐的减少 (3)需要优化的地方:如果在某趟排序中没有发生一次交换,可以提前结束排序
阅读全文
摘要:算法的时间复杂度: 基本案例: 计算1-100所有数字之和: T(n)可忽略的项: - 常数项:如:2n+20 和 2n 随着n 变大,执行曲线无限接近, 20可以忽略 - 低次项:如:2n^2+3n+10 和 2n^2 随着n 变大, 执行曲线无限接近, 可以忽略 3n+10 - 系数:如:随着n
阅读全文
摘要:java package stu; / 递归回溯 迷宫问题 / public class MiGong { / 地图,1表示墙,0表示该点没走过 走迷宫方法下 右 上 左 / public static int[][] getMap(){ int[][] map = new int[8][7]; i
阅读全文
摘要:前缀表达式的求值: 例如: (3+4)×5-6 对应的前缀表达式就是 - × + 3 4 5 6 , 针对前缀表达式求值步骤如下: - 从右至左扫描,将6、5、4、3压入堆栈 - 遇到+运算符,因此弹出3和4(3为栈顶元素,4为次顶元素),计算出3+4的值,得7,再将7入栈 - 接下来是×运算符,因
阅读全文
摘要:```java /** * 数组模拟栈-简易计算器 */ public class ArrayStackDemo { public void calculate(String s){ //数字栈 ArrayStack numStack = new ArrayStack(10); //符号栈 ArrayStack oper...
阅读全文
摘要:```java / 单向环形链表应用 约瑟夫环 Josephu 问题为:设编号为1,2,… n的n个人围坐一圈,约定编号为k(1nums){ System.out.println("参数有误"); return; } BoyNode c = first; //找到最后一个结点 while (true
阅读全文
摘要:```java
/** * 双向链表 */
public class DoubleLinkListDemo { public static void main(String[] args){ DoubleLinkList linkList = new DoubleLinkList(); DoubleNode n1 = new DoubleNode(1,"...
阅读全文
摘要:```java /** * 带头结点的单链表 */ public class LinkListDemo { //获取节点的个数,不统计头节点 public static int getLength(LinkList linkList){ Node head = linkList.getHead(); int l = 0; Node c = head.next; while (c!=null){ l
阅读全文
摘要:```java / 环形队列 / public class ArrayQueueDemo { public static void main(String[] args){ ArrayQueue queue = new ArrayQueue(3); queue.add(1); queue.show(
阅读全文
摘要:```java public class SparseArray { //输出二维数组 public static void consoleArr(int[][] arr){ for (int[] ints : arr) { for (int anInt : ints) { System.out.p
阅读全文
摘要:```JAVA / 大数字相乘 / public class Test1 { / ints num @param ints @param num @return / public static int[] mul(int[] ints,int num){ for (int i = 0; i 0; i
阅读全文

浙公网安备 33010602011771号