![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法设计
云生1992
--
展开
-
二分查找:联合中位数
题目描述给出两个长度为n的数组A1,A2,...An, B1,B2,...Bn,所有2n个数互不相同,并且数组A和数组B按照升序排列。要求找出这2n个数的中位数。输入输入分3行:第1行是n的值,第2行是以空格分隔的数组A的元素,第3行是以空格分隔的数组B的元素。2、3行最后有空格。输出输出所求中位数,末尾没有空格。样例输入41 2 3 4 5 6 7 8 样原创 2016-04-13 22:46:51 · 2088 阅读 · 0 评论 -
堆排序:动态数组求中位数
题目描述输入一组整数a1, a2, …, an ,每输入一个整数,输出到此时为止的中位数。中位数定义:如果数串的大小是偶数 2j,中位数是从小到大排列的第 j 个数;如果数串的大小是奇数 2j+1,中位数是从小到大排列的第 j+1 个数。 输入一组整数,数字和数字之间以空格隔开。(在实际控制台编程的时候,输入数组之后输入回车,还需输入一个终止符Ctr+Z)输出一组整数,数字和数字之间以空格隔原创 2016-04-10 00:43:34 · 5621 阅读 · 2 评论 -
随机的Lazy-Greedy:lazier than lazy greedy
本文介绍一种针对submodular问题的基于Greedy的随机算法:Stochastic-Greedy。算法来自AAAI2015的一篇论文 Lazier Than Lazy Greedy ,第一作者是来自ETH Zurich 的 Baharan MirzasoleimanSubmodular问题Submodular是集合函数的一个性质。关于Submodular,wiki给出了三个等价定义(这里提一原创 2016-04-01 23:56:11 · 1743 阅读 · 0 评论 -
堆排序详解以及JAVA实现
堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。堆是一棵完全二叉树,它的特点是(以大顶堆为例),堆顶的元素大于子节点的元素。如果用数组array来存储,则堆顶是array[0],其子节点是array[1],array[2]。array[1]的子节点是array[3],array[4]。一般的,array[i]的子节点是array[2*i+原创 2017-02-24 14:09:48 · 522 阅读 · 5 评论 -
查找算法——中位数附近2k+1个数
题目描述给出一串整型数a1,a2,...,an以及一个较小的常数k,找出这串数的中位数m和最接近m的小于等于m的k个数,以及最接近m的大于等于m的k个数。将这2k+1个数按升序排序后输出。 中位数定义:如果数串的大小是偶数2j,中位数是从小到大排列的第j个数;如果数串的大小是奇数2j+1,中位数是从小到大排列的第j+1个数。输入第一行是k的值和数串的长度n。第二行是以空格隔开的n个整型数,最后一原创 2016-04-01 13:33:30 · 1772 阅读 · 4 评论 -
利用均匀分布和中心极限定理产生正态分布(高斯分布)
中心极限定理: 设随机变量序列{Xi}\{X_i\}相互独立,具有相同的期望和方差,即E(Xi)=μ,D(Xi)=σ2E(X_i)=\mu, D(X_i)=\sigma^2,令Yn=X1+...+Xn, Zn=Yn−E(Yn)D(Yn)√=Yn−nμn√σY_n=X_1+...+X_n,~Z_n=\frac{Y_n-E(Y_n)}{\sqrt{D(Y_n)}}=\frac{Y_n-n\mu}{\s原创 2017-03-28 14:45:55 · 16619 阅读 · 4 评论 -
JAVA实现单链表快速排序
思路如下:将链表的第一个元素设置为pivot,遍历之后的n-1个元素,如果该元素的值大于pivot,则将其放在链表末尾(O(1)时间)。import java.util.ArrayList;import java.util.Collections;import java.util.List;public class LinkListSort { public原创 2017-03-27 20:35:38 · 4198 阅读 · 3 评论 -
快速排序详解及JAVA/C++实现
快速排序(Quicksort)的主要思想是,通过某种O(n)的方法,将乱序数组分为左右两部分,使得左边的元素小于右边的元素,然后进行递归。平均来说,复杂度是O(nlog(n)).快速排序的关键在于如何用O(n)的时间将数组分为左右两部分。不妨设临界元素pivot=array[0],将数组分为比pivot大和小两部分。我们利用两个指针left_index以及right_index,使得下标小于l原创 2017-02-25 20:30:17 · 451 阅读 · 8 评论 -
leetcode编程:对数时间查找有序数组中位数
问题描述输入:两个有序数组nums1,nums2输出:两个数组的中位数原问题描述如下There are two sorted arrays nums1 and nums2 of size m and n respectively.Find the median of the two sorted arrays. The overall run time complexity s原创 2017-06-03 15:14:16 · 361 阅读 · 0 评论