
算法
老头儿ii
除了代码,还有诗和远方。
展开
-
算法-冒泡排序(Java)
/** * 去除低阶项,保留高阶项,去除高阶项的系数 * 冒泡排序,时间复杂度=o(N^2)=N*(N-1)*...*1=aN^2+bN+1 * * @param arr 待排的数组 */ private static void bubbleSort(int[] arr) { if (arr == null || a...原创 2019-08-05 08:31:50 · 196 阅读 · 0 评论 -
算法-数据结构之栈(Java)
最近在看左神的算法课,理解之后在此将代码记录下来将数组转换成栈:class ArrayToStack { private Integer[] arr;//数据栈 private Integer index;//索引位 public ArrayToStack(int initSize) { if (initSize < 0) { ...原创 2019-08-11 12:11:21 · 167 阅读 · 1 评论 -
算法-桶排序之计数排序(Java)
最近在看左神的算法课,理解之后在此将代码记录下来例:给定一个数组,求如果排序之后,相邻两数的最大差值,要求时间复杂度O(N),且要求不能用非基于比较的排序代码:/** * 求最大差值 * * @param arr 数组 * @return 最大差值 */ private static int maxGap(int[] arr) ...原创 2019-08-09 22:57:58 · 234 阅读 · 0 评论 -
算法-堆排序(Java)
最近在看左神的算法课,理解之后在此将代码记录下来大根堆任何一棵子树的最大值为树的根例:1、3入堆,为根结点2、5入堆,为3的左孩子,判断是否比3大,大的话交换位置3、7入堆,为5的右孩子,判断是否比5大,大的话交换位置4、6入堆,为3的左孩子,判断是否比3大,大的话交换位置5、4入堆,为6的右孩子,判断是否比6大,大的话交换位置小根堆任何一棵子树的最小值为树的根例:1...原创 2019-08-07 15:57:58 · 214 阅读 · 0 评论 -
算法-快速排序(Java)
问题一:给定一个数组arr,和一个数num,请把小于等于num的数放在数组的左边,大于num的数放在数组的右边。要求额外空间复杂度O(1),时间复杂度O(N)问题二(荷兰国旗问题):给定一个数组arr,和一个数num,请把小于num的数放在数组的左边,等于num的数放在数组的中间,大于num的数放在数组的右边。问题二代码: /** * 划分 * @par...原创 2019-08-06 10:13:27 · 168 阅读 · 0 评论 -
算法-归并排序(Java)
/** * 归并排序 * @param arr 待排的数组 */ private static void mergeSort(int[] arr) { if (arr == null || arr.length < 2) { return; } sortProcess(arr...原创 2019-08-05 17:32:15 · 123 阅读 · 0 评论 -
算法的复杂度与Master定理
参考 http://www.gocalf.com/blog/algorithm-complexity-and-master-theorem.html原创 2019-08-05 14:08:29 · 239 阅读 · 0 评论 -
算法-对数器模板-数组(Java)
最近在看左神的算法课,里面讲到了对数器,在此将其记录下来对数器的概念有一个你想要测试的方法A实现一个绝对正确,但是时间复杂度不好的方法B实现一个随机样本产生器实现对比的方法把方法A和方法B对比验证很多此来验证方法A是否正确当样本数量很多时比对测试依然正确,可以确定方法a已经正确对数器的使用1、写一个需要测试的方法A,以冒泡排序为例 /** * 去除低阶项,保...原创 2019-08-05 08:56:58 · 319 阅读 · 0 评论 -
算法-插入排序(Java)
/** * 插入排序,时间复杂度=o(N^2) * * @param arr 待排的数组 */ private static void insertionSort(int[] arr) { if (arr == null || arr.length < 2) { return; }...原创 2019-08-05 08:34:49 · 133 阅读 · 0 评论 -
算法-选择排序(Java)
/** * 选择排序,时间复杂度=O(N^2)=(N-1)*(N-2)*(N-3)*...*1 * * @param arr 待排的数组 */ private static void selectionSort(int[] arr) { if (arr == null || arr.length < 2) { ...原创 2019-08-06 10:55:36 · 114 阅读 · 0 评论 -
算法-数据结构之队列(Java)
最近在看左神的算法课,理解之后在此将代码记录下来将数组转换成队列:class ArrayToQueue { private Integer[] arr; private Integer size; private Integer start; private Integer end; public ArrayToQueue(int initSize) ...原创 2019-08-12 11:28:17 · 107 阅读 · 0 评论