算法
文章平均质量分 57
油头小兄妹
风雨砥砺,前行不止
展开
-
算法学习之路-二分查找
描述:给定一个单调递增的整数序列,问某个整数是否在序列中。输入:第一行为一个整数n,表示序列中整数的个数;第二行为n(n不超过10000)个整数;第三行为一个整数m(m不超过50000),表示查询的个数;接下来m行每行一个整数k。输出:每个查询的输出占一行,如果k在序列中,输出Yes,否则输出No。输入样例:51 3 4 7 113369原创 2015-04-03 21:22:43 · 597 阅读 · 0 评论 -
算法学习之路-归并排序
描述:给定一个数列,用归并排序算法把它排成升序。输入:第一行是一个整数n(n不大于10000),表示要排序的数的个数;下面一行是用空格隔开的n个整数。输出:输出排序后的数列,每个数字占一行。输入样例:53 2 1 4 5输出样例:12345public class MergeSort { private stat原创 2015-04-03 22:23:35 · 556 阅读 · 0 评论 -
算法学习之路-三种插入排序
插入排序:有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法。插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的。插入排序细分可以分为三种:简单插入排序:思路简单直接上关键部分代码。一直int数组a,下同。for (int i = 1; i < a.length; i+原创 2015-04-04 22:10:35 · 626 阅读 · 0 评论 -
算法学习之路-交换排序
交换排序主要有两种:冒泡排序和快速排序冒泡排序:基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。上代码待排int数组为a,xiat原创 2015-04-04 23:11:10 · 600 阅读 · 0 评论 -
Java产生唯一的随机数
Java产生唯一的随机数说起唯一的随机数,可能很容易想到java.util.UUID,如下,可以产生32位长度的字符串。String str = UUID.randomUUID().toString().replaceAll("-", "");但是这样并不是一定没问题的,单机多线程的情况下也可能出现重复的情况。UUID按照开放软件基金会(OSF)制定的标准计原创 2016-03-28 19:44:52 · 11837 阅读 · 0 评论 -
Java实现QPS控制
Java实现QPS控制什么是QPS QPS:queries per second :每秒的请求数QPS控制的目的 防止恶意刷取,增加项目负载解决方案1(假设需要控制在1s内不多于400个请求):方案描述: 使用数组存储每个请求到来的时间,前400次请求顺利通过,并填满数组。 后续请求到来时,判断当前时间是否比数组中最早的时间晚1s,未晚,则打回, 晚则替换数组中原创 2016-03-23 15:33:50 · 13919 阅读 · 8 评论 -
解决Hash冲突的几种方法
开放地址法:1.线性探测法 线性再散列法是形式最简单的处理冲突的方法。插入元素时,如果发生冲突,算法会简单的从该槽位置向后循环遍历hash表,直到找到表中的下一个空槽,并将该元素放入该槽中(会导致相同hash值的元素挨在一起和其他hash值对应的槽被占用)。查找元素时,首先散列值所指向的槽,如果没有找到匹配,则继续从该槽遍历hash表,直到:(1)找到相应的元素原创 2015-08-24 15:07:44 · 36428 阅读 · 4 评论