算法
文章平均质量分 82
hlang8160
这个作者很懒,什么都没留下…
展开
-
Java_字符串模式匹配
暴力破解法(Brute-Force)主字符串的长度为n,子串的长度为m。将主字符串与子字符串进行逐一比较,若主串与子串相等,加一。若匹配最后不想等,则从主串下一索引开始重新匹配。最多需要比较(n-m)*m次。public class BruteForce { public static int BF(String S,String P) { int index=-1; i原创 2017-10-28 09:49:41 · 510 阅读 · 0 评论 -
进程、线程和多线程总结
https://www.cnblogs.com/fuchongjundream/p/3829508.html一、说说概念1、进程(process)狭义定义:进程就是一段程序的执行过程。广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。简单的来讲进程的概念主要有两点:第一,进程是一...转载 2018-05-25 15:02:43 · 198 阅读 · 0 评论 -
C/C++ typedef详细用法
第一、四个用途用途一:定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如: char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, // 和一个字符变量; 以下则可行: typedef char* PCHAR; // 一般用大写 PCHAR pa, pb; // 可行,同时声明了两个指向字符变量的指针 虽然:...转载 2018-06-12 16:54:35 · 145 阅读 · 0 评论 -
C语言中malloc()和calloc()c函数用法
函数malloc()和calloc()都可以用来动态分配内存空间,但两者稍有区别。 malloc()函数有一个参数,即要分配的内存空间的大小: void *malloc(size_t size); calloc()函数有两个参数,分别为元素的数目和每个元素的大小,这两个参数的乘积就是要分配的内存空间的大小。 void *calloc(size_t numElements,size_...转载 2018-06-13 10:13:47 · 975 阅读 · 0 评论 -
浅谈C/C++引用和指针的联系和区别
为什么C/C++语言使用指针? 答案:①一方面,每一种编程语言都使用指针。不止C/C++使用指针。 每一种编程语言都使用指针。C++将指针暴露给了用户(程序员),而Java和C#等语言则将指针隐藏起来了。 “Everything uses pointers. C++ just exposes them rather than hiding them,” It’s easier to giv...转载 2018-06-14 21:38:40 · 161 阅读 · 0 评论 -
C++中头文件(.h)和源文件(.cpp)都应该写些什么
头文件(.h): 写类的声明(包括类里面的成员和方法的声明)、函数原型、#define常数等,但一般来说不写出具体的实现。 在写头文件时需要注意,在开头和结尾处必须按照如下样式加上预编译语句(如下): #ifndef CIRCLE_H#define CIRCLE_H//你的代码写在这里#endif 这样做是为了防止重复编译,不这样做就有可能出错。 在编译实现声明的函数,开...转载 2018-06-15 15:38:04 · 342 阅读 · 1 评论 -
Markdown语法入门
Markdown 语法入门(Mou) 刘邓诏初 关注2016.04.21 19:43* 字数 1008 阅读 20868评论 5喜欢 46MouMou icon** 如果你觉得这篇文章对你有帮助或启发,请点下关注,谢谢 _**导语:Markdown 是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式。一、Markdown 官方文档Markdown 中...转载 2018-06-02 16:18:08 · 279 阅读 · 0 评论 -
本地上传到github
1.首先在github帐号中新建repositories2.在本地电脑使用ssh-keygen -t rsa -C "928968620@qq.com" 得到id_ras.pub3.打开文件,复制,之后在github - Account - Settings - ssh中粘贴key4.进入要上传的文件夹git config --global user.name "hlang8160"git con...原创 2018-06-18 09:33:22 · 186 阅读 · 0 评论 -
c++迭代器介绍与Vector赋值方法
迭代器的简介 (1):迭代器类似于指针类型,它也提供了对对象的间接访问。 (2):指针是c语言中就有的东西,迭代器是c++中才有的,指针用起来灵活高效,迭代器功能更丰富些。 (3):迭代器提供一个对容器对象或者string对象的访问的方法,并且定义了容器范围。使用迭代器 迭代器和指针不一样,容器和string有迭代器类型同时拥有返回迭代器的成员。比如,容器都有的成员begin和end,其中begi...转载 2018-07-02 10:26:14 · 8949 阅读 · 0 评论 -
Hive HiveQL基础知识及常用语句总结
https://blog.csdn.net/u012386109/article/details/78214894https://blog.csdn.net/u010385646/article/details/53167707基础语句CREATE DROP 建表、删表建表---------------------------------------- 1. 直接建表---...转载 2018-08-07 20:45:20 · 713 阅读 · 0 评论 -
寻找数组最小小的k个数
思路1:利用快排的思想,寻找第k个位置上正确的数,k位置前面的数即是比k位置小的数组,k后面的数即是比k位置元素大的数组 public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) { ArrayList<Integer> res = new ArrayList<...原创 2018-11-04 12:27:44 · 171 阅读 · 0 评论 -
50个最常用的Linux命令
转载自:https://www.cnblogs.com/midiyu/p/7738243.htmltar grep find ssh sed awk vim diff sort export args ls pwd cd gzip bzip2 unzip shutdown ftp crontab service ps free top df k...转载 2018-11-12 11:52:20 · 480 阅读 · 0 评论 -
c++编译过程简介
了解编译过程的益处c++工程相关的问题什么是库?静态库和动态库又有什么区别?头文件起什么作用?编译过程简介名词:编译:把源文件中的源代码翻译成机器语言,保存到目标文件中。如果编译通过,就会把CPP转换成OBJ文件。编译单元:每个cpp就是一个编译单元,每个编译单元相互之间是独立且相互不知的。一个编译单元(Translation Unit)是指一个.cpp文件以及这所include的所有.h文件,....转载 2018-04-14 15:56:41 · 1025 阅读 · 1 评论 -
c++ cpp和hpp
https://www.cnblogs.com/ymjyqsx/p/7806323.html首先,我们可以将所有东西都放在一个.cpp文件内,编译器会将这个.cpp编译成.obj,即编译单元。一个程序可以由一个编译单元组成,也可以由多个编译单元组成。一个.cpp对应一个.obj,然后将所有的.obj链接起来(通过一个叫链接器的程序),组成一个.exe,即程序。如果一个.cpp要用到另一个.转载 2018-04-14 15:48:04 · 2480 阅读 · 0 评论 -
二叉树的解决方法
二叉树的问题的解决办法主要采用递归的方法解决主要有两种:递归遍历递归分治90%的问题可以采用递归分治的办法解决。1.递归遍历的方法定义一个全局变量,将该变量作为一个结果参数传入一个定义的空返回值类型的辅助函数。递归遍历的方法,是一种不断得递归深入遍历,亲力亲为。遍历的顺序很重要。2.递归分治的方法分治的办法通常可以不用定义辅助函数,或者定义一个有原创 2018-01-28 22:01:39 · 941 阅读 · 0 评论 -
Java_字符串匹配算法总结
字符串模式匹配算法(string searching/matchingalgorithms)转载自http://blog.csdn.net/chndata/article/details/43792363顾名思义,就是在一个文本或者较长的一段字符串中,找出一个或多个指定字符串(Pattern),并返回其位置。这类算法属基础算法,各种编程语言都将其包括在自带的String类函转载 2017-10-28 10:58:41 · 578 阅读 · 0 评论 -
java_堆排序
堆排序采用完全二叉树由下至上的堆有序化(上浮)如果堆的有序化,因为某个节点比它的父节点还要大而打破堆的有序化,那么该节点就要上浮,上浮的关键是,节点k的父节点为k/2。 由上至下的堆有序化(下沉)如果某个节点因为变得比它的两个子节点之一要小,那么该节点就要下沉。将该节点与两个子节点中较大的节点进行交换来恢复。下沉的关键是将节点k与它的子节点2k或2k+1交换。 插入原创 2017-11-08 22:20:09 · 259 阅读 · 0 评论 -
重建二叉树
由前序遍历序列和中序遍历序列重建二叉树:package leetCode;import java.util.*;public class BinaryTree { public static TreeNode Construct(int[] preOrder,int[] inOrder){ int len=preOrder.length; if(preOrder==null||原创 2017-11-02 18:00:35 · 170 阅读 · 0 评论 -
二叉树的下一个节点
给定二叉树和其中一个节点,如何找出中序遍历序列的下一个节点?树中的节点有两个指向左、右子节点的指针,还有一个指向父节点的指针。分为三种情况:1. 如果一个节点有右子树,那么它的下一个节点就是它的右节点的最左子节点。2. 如果一个节点没有右子树,并且该节点是它父节点的左子节点,那么它的下一节点就是它的父节点。3. 如果一个节点没有右子树,并且还是它父节点的右子原创 2017-11-03 20:22:15 · 220 阅读 · 0 评论 -
json文件和xml文件
json和xml都是采用结构化的方法来表示数据。json采用的是对象字典,键值对的方式,xml是采用标签的方式。例子:{ "name": "中国", "province": [{ "name": "黑龙江", "cities": { "city": ["哈尔滨", "大庆"] } }, {原创 2017-12-01 15:06:42 · 291 阅读 · 0 评论 -
Java_快速排序
快排思路:1.随机打乱所有数,保证数据的随机性。2.需要两个辅助函数,一个是交换函数,一个是分区操作函数。3.先从序列中挑取一个数,以该数作为基准,所有比基准大的数方在基准后面,比基准小的数放在基准前面。基准函数:选取第一个数作为基准。选取头尾两个指针,将头指针向右移动,尾指针向左移动。如果头指针位置元素小于基准,则将头指针向右移动,如果尾指针元素大于基准,则将尾指针向左移动。直到原创 2017-10-25 20:52:57 · 246 阅读 · 0 评论 -
快排Partition的各种写法
public static int partition(int[] array,int lo,int hi) { int key=array[lo]; int i=lo; int j=hi; while(i<j) { while(array[j]>=key&&i<j) j--; while(array[i]<=key&&i<j) i++; swap(array,i原创 2017-12-31 11:41:55 · 4816 阅读 · 0 评论 -
0x80000000
关于0x80000000为什么等于-2147483648和负数在内存上储存的问题http://blog.csdn.net/youyou362/article/details/726679511·先说明负数怎么储存(1)十进制负数是以其补码储存在内存上。验证:求-8在内存上以二进制形式1的个数思路是:拿变量,令值为1,与-8的二进制码的每一位做与运算,转载 2017-12-31 19:02:44 · 7707 阅读 · 2 评论 -
Java排序之选择排序、插入排序、希尔排序、冒泡排序
排序算法package Suanfa;public class Suanfa1 { public static void sort(Comparable[] a) { } public static boolean less(Comparable v, Comparable w) { return v.compareTo(w)<0;//判断v是否小于w } pub原创 2017-10-23 21:32:00 · 423 阅读 · 0 评论 -
字典序算法_java
package newSuanfa;import java.util.*;/* * 按照字典序的方法实现全排列 * 1.首先将给定的数组进行从小到大排序。 * 2.从右向左找到第一个左邻小于右邻的数的索引(从后向前,第一次左邻小于右邻的元素,说明该索引后面肯定有元素大于该数),如果找不到说明该数已经是最大数 * 比如2,4,3,1。第一次左邻小于右邻是2<4,找到该索引为位置0。 *原创 2018-01-06 16:24:37 · 923 阅读 · 0 评论 -
Java排序之归并排序
归并排序有两种方式:采用递归的方式,从顶向下递归。采用非递归方式,两两归并,自底向上。归并排序的核心都是归并操作:1.申请空间,使其大小为两个已排序的数组大小之和,用来存放排序之后的数组。2.复制数组,将数组a复制到辅助数组aux2.分别指定已排序的两个数组头结点。3.分别比较两个数组头元素,将较小值放入数组中。4.重复3,直至全部排序完。package Suanf原创 2017-10-25 09:10:09 · 242 阅读 · 0 评论 -
机器学习大牛最常用的5个回归损失函数,你知道几个?
“损失函数”是机器学习优化中至关重要的一部分。L1、L2损失函数相信大多数人都早已不陌生。那你了解Huber损失、Log-Cosh损失、以及常用于计算预测区间的分位数损失么?这些可都是机器学习大牛最常用的回归损失函数哦!机器学习中所有的算法都需要最大化或最小化一个函数,这个函数被称为“目标函数”。其中,我们一般把最小化的一类函数,称为“损失函数”。它能根据预测结果,衡量出模型预测能力的好坏。...转载 2019-04-17 20:09:50 · 936 阅读 · 0 评论