算法笔记
start飞
这个作者很懒,什么都没留下…
展开
-
用java实现单链表的各种操作
用java实现单链表的各种操作: 单链表的结构如下: //定义一个单链表,内部类 private class Node { private int data; private Node next; public Node() {} public Node(int data) { this.data =...原创 2020-04-27 16:52:28 · 1004 阅读 · 0 评论 -
荷兰国旗问题的java解法
荷兰国旗问题: 给定一个数组 arr和一个数num, 请把小于num的数放在数组的坐标,等于num的数放到中间,大于num的数放到右边 package daytrain; //荷兰国旗问题: 给定一个数组 arr和一个数num, 请把小于num的数放在数组的坐标,等于num的数放到中间,大于num的数放到右边 public class HeLan { public static void ...原创 2020-04-13 10:23:13 · 167 阅读 · 0 评论 -
java中比较器小结
比较器用于实现两个对象的排序: //该方法若返回的是正数,则o2排到o1前面 //若返回的是负数,则o1排到前面 //若返回的是0,则二者相等 import java.util.Comparator; public class MyComprator implements Comparator { //该方法若返回的是正数,则o2排到o1前面 //若返回的是负数,则o1排到前面 ...原创 2020-04-13 10:20:09 · 121 阅读 · 0 评论 -
用数组实现栈和队列,以及栈和队列的相互实现
1.用数组实现栈 栈:先进后出 //用数组实现栈 //1.压栈 //2.出栈 //3.判断栈是否为空 public class Stack { //首先需要一个数组以及栈的空间大小 private int[] arr; private int size; private int cur; public Stack(int size) { a...原创 2020-04-13 10:13:06 · 454 阅读 · 0 评论 -
master公式整理
如果一个算法的时间负载度可以表示成如下式子,则可以使用master公式进行计算 T(n) = a*T(n/b)+O(n^d) 其中 a 指这个过程一共发生了多少次,b指这个问题分成的子问题的个数 O(n^d)表示的就是除了递归意外其余 的时间复杂度 则时间复杂度可以计算: 若log_b(a ) > d, 则 T(n) = O(n^log_b(a )) 若log_b(a ) = d, 则 T(...原创 2020-04-12 22:15:44 · 355 阅读 · 0 评论 -
排序整合
我们都知道排序是非常重要的,排序的方法也是有很多,这里面有很多思想,所以应该重点掌握以下。 1.冒泡排序: 依次比较两个相邻的位置的大小,每次将最大的值放到最后一个位置; 时间复杂度: O(n^2) public static void bubbleSort(int[] arr) { if(arr == null || arr.length <2) { ...原创 2020-04-10 18:16:39 · 257 阅读 · 0 评论 -
对数器的理解与使用
对数器的概念和应用: 1.有一个你想要测的方法; 2.实现一个绝对正确的,但是复杂度不好的犯法b; 3.实现对比方法 4.把方法a和方法b相比很多次,来验证a方法是否正确; 5.如果有一个样本使得对比出错,打印样本,分析是哪个方法出错; 6.如果样本数量很多时,比对测试依然正确,则说明写的该方法完全正确 ...原创 2020-04-10 18:13:13 · 216 阅读 · 0 评论