算法
码基
码基
展开
-
求最大子序列和
import java.util.Random;public class MaximumSubquenceSum { private static int N = 15243; //(int) Math.pow(2,18) private static int[] s = new int[N]; public static void main(String[] args) { generate(); int m2 = method2(s, 0, N - 1); System原创 2021-04-07 17:01:46 · 160 阅读 · 1 评论 -
二叉树的序列化和反序列化
package pers.machi;import com.google.common.base.Joiner;import java.util.*;public class BinaryTreeSerde { public static void main(String[] args) throws InterruptedException { TreeNode root4 = new TreeNode(4); TreeNode node3 = new原创 2020-07-04 12:27:42 · 126 阅读 · 0 评论 -
做对了一半
原创 2020-06-05 11:08:50 · 137 阅读 · 0 评论 -
笔试题 前缀式四则运算
一道面试题,算法,队列,栈,前缀式四则运算华为的机试题,练习练习。主要技巧:1,创建类基本运算元素,用来封装 “(” ,")" ,数字以及 + - * / 四个运算符2,将字符串拆分,并分解成一个个运算元素的队列3,将队列中的元素一次读到栈中;每次从队列中读取到 “)” 时,就将栈中元素出栈直到读到 “(” 。出栈元素计算得到结果,再次入栈。package pers.machi;i...原创 2019-11-22 12:05:47 · 212 阅读 · 0 评论 -
priority queue 优先队列堆
堆:本质是数组,通常从下标1开始存储元素。以二叉树的形式展现堆时,堆内每一个元素对应一个节点,并且节点n的的左子树下标为2n,右子树的下标为2n+1。每一个节点的父节点下标为[n/2]。小顶堆:小顶堆:每个结点的值都小于或等于其左右子结点的值。小顶堆的每一个子堆都是小顶堆。堆的两个关键操作:percolate up 已经有一个小顶堆,在尾部插入一个元素,这个元素依次和他的父节点交换,直到小...原创 2019-07-31 22:26:20 · 191 阅读 · 0 评论 -
用scala写一个K值聚类算法
参考 github 上spark-master中一个K值聚类算法的案例。作了一些改进。第一步,生成数据。为了简化,使用python生成了四组均值为(2,2),(-2,2),(2,-2),(-2,-2)方差均为2的正态分布随机数。def genNormalDistributionData(mean, cov, num, tag): id = np.arange(num) id.s...原创 2019-07-20 17:38:44 · 840 阅读 · 0 评论 -
获取点集中的最短距离——scala,递归,函数式编程,时间复杂度NlogN
package pers.machi.minDistanceimport scala.collection.mutableimport scala.io.Sourceimport scala.collection.mutable.ArrayBufferimport util.control.Breaks._case class Point(id: String, x: Double...原创 2019-07-16 11:48:41 · 447 阅读 · 0 评论 -
sort group和hash group
说明:数据库的分组算法有两种,sort group和hash group。前者需要会所有数据进行全局排序,然后在迭代每一条记录时,凡是与上一条记录不一致的,就划分为一个新组。后者则是直接对分组列计算hash值,相同的值会被hash同一组。MapReduce编程中reduce端shuffle就是典型的sort group。貌似现在传统型数据库的分组,以及hive在map端分组都采用的是hash...原创 2019-07-09 13:04:29 · 1268 阅读 · 0 评论 -
双重递归删除二叉搜索树左半子树(含根节点)
package pers.machi.dataSturcture.binarySearchTree;import pers.machi.dataSturcture.disorderArr.DisorderArr;import java.util.ArrayList;import java.util.LinkedList;public class BinarySearchTree { ...原创 2019-06-29 08:57:04 · 181 阅读 · 0 评论 -
各种排序方法的代码及优缺点
结论:**数据量大的情况下,冒泡、插入和希尔排序都过于缓慢;冒泡基本不用,插入适合小数据量排序,希尔排序适合中等数据量排序****归并排序会有大量时间浪费在临时数组内存的操作上,降低了排序速度;而且为了存储临时数组,内存开销远远大于快速排序****HadoopQuickSort算法复杂,一般情况下速度略慢于QuickSort****但是HadoopQuickSort的最大优势在于处理有大量重复数据的情况,在第4次试验每个元素重复10次,HadoopQuickSort的排序速度就快原创 2019-05-30 14:40:17 · 520 阅读 · 0 评论