Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux

中序遍历-----二叉查找树的遍历(迭代版,不使用栈或者队列)

中序遍历-----二叉查找树的遍历(迭代版,不使用栈或者队列)

二叉查找树(Binary Search Tree)的遍历的方法有很多,通常使用的是递归的遍历,其便于理解,但是使用递归的话会造成程序运行的空间浪费,效率并不高。为此可以使用一个栈来模拟递归的过程,实现迭代版的二叉查找树的遍历。但是会使用到额外的存储空间,虽说在运行效率上比递归版的有所提高,但是额外的存储空间还是一定的浪费。但是如何减少额外的存储空间呢?我们知道二叉查找树是可以转换为一个双向环形链表(二叉查找树与双向环形链表的转化),而链表的遍历是不需要额外...
寻找数组中前K个最小的数(Kth smallest element)---(堆排序的应用)

寻找数组中前K个最小的数(Kth smallest element)---(堆排序的应用)

日常生活中我们总是遇到求解一个数组的最小值或者最大值等问题,这些问题基本上都可以在线性时间复杂度内完成,但是如果需要寻找数组的前K个最小值时该怎么做呢?最一般的想法就是将数组排序,然后取出排序后的数组的前k个元素即可,这种算法的时间复杂度也就是排序的时间复杂度为O(NlogN)。但是仔细一想发现,我们没有必要对所有的数进行排序,因为我们只用到了排序后的前K个数,为此可以考虑只找出排序的前K个数即可。这就让我们联想到了堆排序的过程。堆排序分为两部分,一部分是...
多数投票算法(Majority Vote Algorithm)

多数投票算法(Majority Vote Algorithm)

假设有一个数组,其中含有N个非负元素,求其中是否存在一个元素其元素个数大于等于N/2。分析:看到这个问题最先想到的是暴力算法,将数组在O(NlogN)的时间内进行排序,然后扫描一次数组就知道是否存在满足条件的元素了。算法实现:int Majority_Vote_Sort(const int* a, const int n){sort(a,n);int count=0;int max = 0;int now = a[0];int res = a[0];for...
安全人员强烈质疑 iOS/OS X 没有同步修复安全漏洞

安全人员强烈质疑 iOS/OS X 没有同步修复安全漏洞

知名计算机安全研究员 Kristin Paget 今天在官方博客上发表文章,批评了苹果在 OS X 中修正了大量安全漏洞后并没有及时为 iOS 发布相似的安全修复补丁。iOS 安全漏洞等待了数周后才被修复。Paget之前曾经在苹果安全团队工作,并在今年初离开公司加入特斯拉。iOS 7.1.1正式版昨天发布,修正了多个 WebKit 相关的漏洞。这些漏洞早在4月1日发布的 Safari 7.0.3中就已经被修复了。Paget 认为,iOS 和 OS X 系统...
大-小顶混合堆的实现与应用(a min-max heap)

大-小顶混合堆的实现与应用(a min-max heap)

一般情况下我们使用的堆都是大顶堆或者小顶堆,其能实现在常数时间内获得数组的最大值或者最小值,同时满足在对数时间内删除和插入元素。但是如果要同时实现即能在常数时间内获得最大值和最小值,又能在对数时间内删除和插入元素,通常情况下的堆就不能满足上述要求了。为此介绍一种新的数据结构min-max heapmin-max heap 是一颗完全二叉树,但是二叉树的奇数层存的是max元素,偶数层存的是min元素,也即在以偶数层的某节点为根节的子树中,根节点最大,若在以奇...
算法---快速排序(quick sort)

算法---快速排序(quick sort)

在前面介绍的排序算法中,最快的排序算法为归并排序(http://www.linuxidc.com/Linux/2014-11/109824.htm),但是归并排序有一个缺陷就是排序过程中需要O(N)的额外空间。本文介绍的快速排序算法时一种原地排序算法,所需的额外空间复杂度为O(1)。堆与堆排序 http://www.linuxidc.com/Linux/2014-09/107318.htm归并排序的实现 http://www.linuxidc.com/Li...
算法---归并排序(Merge Sort)---多版本对比

算法---归并排序(Merge Sort)---多版本对比

归并排序是一种利用“分治”手段来实现的排序方法,其通过二分将数组分为若干个有序的子数组,然后再将这些子数组合并到一起组成一个新的数组。归并排序的实现 http://www.linuxidc.com/Linux/2014-09/107316.htm直接插入排序的三种实现 http://www.linuxidc.com/Linux/2014-09/107313.htm直接选择排序及交换二个数据的正确实现 http://www.linux...
算法----希尔排序(shell sort)

算法----希尔排序(shell sort)

在分析插入排序(插入排序算法实现)的算法性能的过程时知道,当数组规模较小或者存在较多的有序子序列时,插入排序将会在很短的时间内完成数组的排序,为此可以设计一个单调序列h[n],将数组分为多个小的序列,然后这些小的序列使用插入排序。h[n]={1,4,7,10,13,16,19……,3*x+1}。算法实现:void sort::shell_sort(int* a, const int n){int h = 0;while (h&l...
<< 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 >>