数据结构 算法 编程 面试

原创 2013年12月04日 10:38:58

作为一个非科班出身程序员,数据结构先天不足,学了就忘,提笔忘码经常发生,恨恨不已,决心好好打基础!此贴为证,坚持每天进步一点点!


1.n长度的数组,计算第m大个数?时间复杂度怎么小于O(nlgn)?

此题实际是在问顺序统计量,定义如下:实际上就是快排思想。

The ith order statistic of a set of n elements is the ith smallest element。

算法如下,时间期望为O(n):区别快排的原因是只有一个递归式而快排有2个。



进一步,如果利用数据结构辅助排序算法->优先队列,比如堆,可以用一个大根堆,元素m个,不断插入堆直到n个元素。

时间分析:建堆O(n),插入堆O(lgn),所以O(nlgn). 如果此处用数组,插入排序每次O(n),总时间O(n^2)

以上分析虽然看似没有减小时间,但是实际上要比整体排序的时间要短,具体算紧上限的话,我还不会做。


再进一步,还是利用数据结构排序思想,既然二叉搜索树和快排是失散多年的兄弟,红黑树的性能不是更好。

所以利用红黑树解决顺序统计问题也叫动态顺序统计,因为此时集合动态的。对红黑树进行扩张,增加除了Key的另一个域,记录所有子树的个数+1。算法很简单了,分析:

因为红黑树是平衡树,树高平均O(lgn),而且维护树的特性(insert/delete)也是O(lgn),所以总的时间是O(lgn).是不是很惊喜!


3.关于比较排序为什么最快时间是O(nlogn),那么肯定还有更快的不是基于比较的排序算法?


2.链表逆转?

Java数据结构面试题

1.栈和队列的共同特点是(只允许在端点处插入和删除元素) 4.栈通常采用的两种存储结构是(线性存储结构和链表存储结构) 5.下列关于栈的叙述正确的是(D)      A.栈是非线性结构B.栈是一种树状...
  • u011225629
  • u011225629
  • 2015年08月29日 21:01
  • 5702

面试——数据结构与算法

分类: 数据结构与算法(14) 作者同类文章X 面试(5) 作者同类文章X 1、快速排序: 2、哈夫曼树: 哈夫曼...
  • qq_35114086
  • qq_35114086
  • 2016年11月24日 13:02
  • 200

数据结构学习之二叉树(面试易考题整理)

【摘要】计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。二叉...
  • xy010902100449
  • xy010902100449
  • 2015年06月23日 09:20
  • 4493

[算法]面试时的Java数据结构与算法

查找和排序算法是算法的入门知识,其经典思想可以用于很多算法当中。因为其实现代码较短,应用较常见。所以在面试中经常会问到排序算法及其相关的问题。但万变不离其宗,只要熟悉了思想,灵活运用也不是难事。一般在...
  • mjl960108
  • mjl960108
  • 2016年12月02日 23:10
  • 6885

算法与数据结构面试题(6)-腾讯面试题

题目 给你10 分钟时间,根据上排给出十个数,在其下排填出对应的十个数 要求下排每个数都是先前上排那十个数在下排出现的次数。 上排的十个数如下: 【0,1,2,3,4,5,6,7,8,9】 初看此...
  • qhshiniba
  • qhshiniba
  • 2014年12月12日 14:32
  • 1231

Android可能会遇到的几种类型面试题

题外话:       生活本就有许多不如意,谁不想家庭幸福,谁不想开心快乐,谁又不想过得舒舒服服,但,天下从来都没有免费的午餐,就算是李刚他儿子也有属于他的烦恼, 所以,我们有什么理由不笑对生活呢?!...
  • huangyh000000
  • huangyh000000
  • 2016年08月01日 22:43
  • 1359

《面试》数据结构 - python

1. 数据栈思想:只限定在数据栈的一端(栈顶)进行元素的操作,是一种特殊的线性表。 操作实例: 二进制转换十进制class Structure(object): def twooten(s...
  • tongxinzhazha
  • tongxinzhazha
  • 2017年08月11日 20:19
  • 221

C++ 数据结构、算法笔试题(1)

1、定义一个”数据类型” datatype类,能处理包含字符型、整型、浮点型三种类型的数据,给出其构造函数。 #include using namespace std; class datatype...
  • VisualTracker
  • VisualTracker
  • 2015年06月09日 13:40
  • 469

Android客户端面试基础(五)-数据结构与算法

链表与数组数组静态分配内存,链表动态分配内存; 数组在内存中连续,链表不连续; 数组元素在栈区,链表元素在堆区; 数组利用下标定位,时间复杂度为O(1),链表定位元素时间复杂度O(n); 数组插入或删...
  • johnWcheung
  • johnWcheung
  • 2017年06月02日 12:32
  • 1279

评微软等公司数据结构和算法面试100题

作者:July。 时间:2010年10月-11月。版权所有,侵权必究。 出处:http://blog.csdn.net/v_JULY_v。 说明:本文原题为:“横空出世,席卷Csdn [评微软等...
  • mountplorer
  • mountplorer
  • 2011年09月23日 16:41
  • 588
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据结构 算法 编程 面试
举报原因:
原因补充:

(最多只允许输入30个字)