自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 两个栈模拟一个数列

问题:如何使用两个栈实现一个数列,并写出入队和出队的函数。栈是后进先出,队列是先进先出。为了模拟先进先出,可以使用两个栈A,B,A栈专门管理入队的元素,B栈专门管理出队的元素。比如要将将1 2 3 4 5入队,则全部压入A中,此时A:1 2 3 4 5。如果要出队,则将A中先全部导入到B中,此时B :5 4 3 2 1 ,这时候再从B栈中出来的就是队列出队的顺序。#include#inclu

2016-02-29 12:49:24 440

原创 求两个有序数组的中位数

设两个有序数组X[1...n],Y[1...n],每个包含n个有序元素,设计一个O(logn)的算法来找出X和Y中2n个数的中位数。

2016-02-29 09:55:49 508

原创 确定集合S中与S中位数最接近的k个数

问题描述:设计一个O(n)时间的算法,对于一个给定的包含n个不同元素的集合S和一个正整数K问题分析,我们前面已知Select算法求n个数集合中第k大的数算法复杂度为O(n),解决此问题可以分为以下几步:       1.求出中位数x(可以利用Select函数求集合中第(n+1)/2小的数就是中位数。       2.用x减去集合中的每个数得到差的绝对值储存在数组b[n]中     

2016-02-28 21:11:54 2766

原创 求k分位数的k-1个顺序统计量

问题:对于一个包含n个元素的集合来说,k分为数就是指能把有序集合分成k个等大小集合的“k-1个顺序统计量”,给出一个能找出某一集合的k分位数的O(nlogk)的算法。       首先k要整除n,这样才可以分为k个等大小的集合。若将一个大小为n的集合按照顺序排好,我们所要求的这k-1个数就是要把这个集合平均分为k个集合。例如集合A= { 8, 4,0, -89, -12, 0, 36, 7

2016-02-28 16:59:36 2041

原创 最坏情况为线性时间的选择算法

输入:一系列数a[0]...a[n-1]和一个整数K输出:这列数中第k小的数同样的问题在上篇文章中用快速排序模型,我们得到的平均时间复杂度是O(n),但是遗憾的是最坏情况会达到O(n^2)。这篇文章中我们还是使用快速排序的模型,但是改变了划分的方式,这个算法会保准得到一个很好的划分。将该算法叫做Select,具体如下:     1.将输入数组划分为n/5组,每组有5个元素,且剩下的至多

2016-02-28 14:37:13 5214 1

原创 最小与最大值

输入:一个包含n个数的集合A输出:集合A的最大值最小值        单一求解最大值与最小值可以通过打擂台的方法来实现,求解最大值或者最小值需要比较n-1次,若同时要求求出最大值与最小值比较的次数为2*n-2次.事实上我们有比这个更快的算法,比较次数为3n/2.具体做法为:记录已知的最小值与最大值,对输入·的元素成对进行处理,首先比较输入的这对元素,再将小的与当前最小值比较,将大的与当前最

2016-02-27 21:17:57 629

原创 平均时间复杂度为O(n)的选择算法

问题:求一列数中第i小的数求解第k小的数,使用的是快速排序的模型。描述:输入一列数a[0],a[1]...a[n-1]共n个和一个整数i,求第i小的数。分析:对于数组a[p..r]中寻找第k小的数,首先设置一个键值key,比如key=a[p],然后扫描数组一次将数组a[p...r]分解为小于或等于key和大于key的两部分,设key此时所在位置下标为position,于是小于或者等于key

2016-02-27 20:47:39 1603

原创 桶排序

桶排序:假设输入·数据服从均匀分布,平均情况下他的时间代价为O(n).桶排序假设输入是一个随机过程,该过程元素都均匀独立分布在[0,1)区间。桶排序将区间[0,1)划分为n个大小相同的区间或称为桶,然后将n个数据分别放入桶中,我们先对每个桶进行排序,然后再遍历所有桶将结果串起来。比如对double a[10] = { 0.79, 0.13, 0.16, 0.64, 0.39, 0.20, 0.

2016-02-27 15:01:57 469

原创 基数排序应用

问题:设计一个算法在O(n)时间内,对0到n^3-1区间内的数进行排序。  此问题是基数排序的应用,也用到了桶排序。思路如下:   可以将数字用n进制表示,那么0到n^3-1中的数最多是n进制的三位数。这样可以建立n个桶按照次位优先的规则排序3次即可。所以总时间是O(n+n+n)=O(n);例如当n=4时,n^3-1=63,有4个数的数列为54,2,63,15;在排序时首先用4进制表示该数

2016-02-27 12:59:49 2573 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除