
算法
ITWUYI
这个作者很懒,什么都没留下…
展开
-
冒泡排序
import java.util.Comparator;public interface Sorter { /** * 排序 * @param list 待排序的数组 */ public <T extends Comparable<T>> void sort(T[] list); /** * 排序 * @param list 待排序的数组 * @param comp 比较两个对象的比较器 .原创 2020-12-28 15:50:54 · 151 阅读 · 0 评论 -
用 Java 写一个二分查找
二分查找import java.util.Comparator;/** * 计算中间位置时不应该使用(high+ low) / 2 的方式,因为加法运算可能导致整数越界,这里应该使用以下三种方式之一: * low + (high - low)/ 2 或 * low + (high – low) >> 1 或 * (low + high) >>> 1(>>>是逻辑右移,是不带符号位的右移) */public class binarySea.原创 2020-12-28 15:48:33 · 449 阅读 · 2 评论 -
Java 中,如何计算两个日期之间的差距?
public static String getDateDiff(Date endDate, Date nowDate) { long nd = 1000* 24* 60* 60; long nh = 1000* 60* 60; long nm = 1000* 60; // long ns = 1000; // 获得两个时间的毫秒时间差异 long diff = endDate.getTime() - nowDa原创 2020-12-21 23:44:59 · 483 阅读 · 0 评论 -
Java 中,怎么打印出一个字符串的所有排列?
public class Solution { public static void main(String[] args) { String str = ""; Scanner sc = new Scanner(System.in); str = sc.nextLine(); printAll(str.toCharArray(),0); } public static void printAll(char[] s原创 2020-12-21 23:05:20 · 432 阅读 · 0 评论 -
LRU缓存实现
LRU缓存实现LRU(Least Recently Used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。import java.util.LinkedHashMap;import java.util.Map;public class Solution { //LRU缓存实现 public static void main(String[] args) { Map<String, S原创 2020-11-30 13:11:47 · 161 阅读 · 1 评论 -
排序算法之选择排序
排序算法之选择排序知识点1、算法步骤(1)首先在未排序的序列中找到最小(大)元素,存放到排序序列的起始位置。(2)再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序的序列的末尾。(3)重复第(2)步,直到所有元素均排序完毕。2、代码实现Java代码:public int[] sort(int[] arr) { // 总共要经过 N-1 轮比较 for (int i = 0; i < arr.length - 1; i++) {原创 2020-10-24 23:39:23 · 484 阅读 · 0 评论 -
排序算法之冒泡排序
排序算法之冒泡排序知识点1、算法步骤(1)比较相邻的元素,如果第一个元素比第二个元素大,就交换它们两个。(2)对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。(3)针对所有的元素重复以上的步骤,除了最后一个。(4)持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。2、代码实现Java代码:public int[] sort(int[] arr){ for (int i = 1; i < arr.leng原创 2020-10-24 23:09:17 · 116 阅读 · 0 评论 -
算法(3):包含main函数的栈问题
包含main函数的栈问题知识点该问题的时间复杂度是O(1)内。如果直接使用一个int变量存储当前的最小值,我们的确可以获得最小值,但是当栈pop()了以后,我们无法获得次小值。我们需要一个数据结构来动态保存每个时刻的最小值,每当push()和pop()的时候,同样更新这个数据结构,而且时间复杂度也是O(1),那么看来需要额外O(n)的空间了。可以选择栈或者一个链表(实质上当作栈使用)。我们使用一个辅助栈来实现,该栈和主栈的大小相同,栈顶存放的是当前栈内的最小值。代码实现:public class S原创 2020-10-20 10:29:03 · 391 阅读 · 0 评论 -
算法(2):用栈实现队列
用栈实现队列知识点代码实现:import java.util.Stack;public class MyQueueDemo { Stack<Integer> myStack1 = new Stack<Integer>(); Stack<Integer> myStack2 = new Stack<Integer>(); //入队 public void push(int x){ myStack1.push(x原创 2020-10-19 18:18:58 · 109 阅读 · 0 评论 -
算法(1):用队列实现栈
用队列实现栈知识点代码实现:import java.util.LinkedList;import java.util.Queue;public class MyStackDemo { public Queue<Integer> queue; public MyStackDemo(){ queue = new LinkedList<Integer>(); } //将元素x推到栈 public void push(int原创 2020-10-19 17:06:57 · 161 阅读 · 1 评论 -
机器学习
(1) 决策树(2) 随机森林算法(3) 逻辑回归(4) SVM(5) 朴素贝叶斯(6) K 最近邻算法(7) K 均值算法(8) Adaboost 算法(9) 神经网络(10) 马尔可夫原创 2020-10-09 01:56:04 · 76 阅读 · 0 评论