
算法
merryken
这个作者很懒,什么都没留下…
展开
-
最大堆及堆排序的实现
堆数据结构用于排序算法中,空间复杂度O(1),时间复杂度O(NlogN),但是在实践中还是不如快速排序(好像快速排序可以更好的利用硬件特性)。堆的意义就在于:最快的找到最大/最小值,在堆结构中插入一个值重新构造堆结构,取走最大/最下值后重新构造堆结构 其时间复杂度为O(logN),而其他方法最少为O(N).堆实践中用途不在于排序,其主要用在调度算法中,比如优先级调度,每次取优先级最高的,时间驱动,转载 2013-01-09 16:35:14 · 506 阅读 · 0 评论 -
【数据结构】排序算法:希尔、归并、快速、堆排序
作者和出处:http://blog.youkuaiyun.com/xiaowei_cqu ,这女孩写得文章不错,大家可以去看一下,受益匪浅。 排序算法 排序是非常常用,非常基本的算法。排序的方法有很多,比如插入排序、选择排序、希尔排序、归并排序、快速排序、堆排序。 本次试验重点实现:希尔排序、归并排序、快速排序、堆排序 插入排序 简单说就是每次选未转载 2013-01-11 00:23:18 · 726 阅读 · 0 评论 -
数据挖掘十大经典算法
国际权威的学术组织the IEEE International Conference on Data Mining (ICDM) 2006年12月评选出了数据挖掘领域的十大经典算法:C4.5, k-Means, SVM, Apriori, EM, PageRank, AdaBoost, kNN, Naive Bayes, and CART. 不仅仅是选中的十大算法,其实参加评选的1转载 2013-01-25 16:40:16 · 1631 阅读 · 0 评论 -
四道有趣的单链表面试题(单链表反序、找出链表的中间元素、链表排序、判断一个单链表是否有环)
以下给出链表结点的数据结构: 1 typedef struct _list_node 2 { 3 double keyVal; 4 struct _list_node *next; 5 }ListNode; Q1 单链表的反序 1 ListNode* reverseList(ListNode* head) 2 { 3 ListNode转载 2013-03-15 11:17:15 · 589 阅读 · 0 评论 -
单链表操作大全(图解逆序)
如果说你经常在linux中,或者在kernel下面做事的话,一定会碰到链表的操作。 如果你没有真正了解单链表,还是把基础打好吧。 如下程序综合了链表的常用方面,请你下自己写出每个函数,debug并运行,直到运行正确;然后对照参考程序, 比较程序的差异,有时候,可能你测试不全面,会有这样那样的错误,多思考,这样,你才记忆深刻。 [cpp] view plaincopy转载 2013-03-15 12:09:50 · 1357 阅读 · 0 评论 -
二叉排序树(二叉搜索树)
动态查找表的一种理想数据结构。 二叉排序树的定义是:二叉排序树T是一棵树,它或者是空,或者具备一下三条性质: (1)、如果T的根节点的左子树非空,其左子树所有结点的值均小于T的根节点的值 (2)、如果T的根节点的右子树非空,其右子树所有结点的值均大于T的根节点的值 (3)、T的根结点的左右子树均为二叉排序树 下面是代码: 文件"tree.h" [cpp转载 2013-05-11 15:52:35 · 646 阅读 · 0 评论 -
数据结构之链表与数组(-)——数组和链表的简介
众所周知,在计算机中要对给定的数据集进行若干处理,首要任务是把数据集的一部分(当数据量非常大时,可能只能一部分一部分地读取数据到内存中来处理)或全部存储到内存中,然后再对内存中的数据进行各种处理。 例如,对于数据集S{1,2,3,4,5,6},要求S中元素的和,首先要把数据存储到内存中,然后再将内存中的数据相加。 当内存空间中有足够大的连续空间时,可以把数转载 2013-07-03 12:22:37 · 536 阅读 · 0 评论 -
数据结构之链表与数组(二) -单向链表上的简单操作问题
本文主要介绍一些解决单向链表上部分操作问题的思路和代码实现。 主要的问题包括以下几点: 1 向单向链表中插入一个节点 2 删除单向链表中的一个节点 3 查找单向链表中的一个节点 扩展问题1:查找单向链表中的倒数第k个节点。转载 2013-07-03 13:55:07 · 718 阅读 · 0 评论 -
数据结构之链表与数组(三)-单向链表上的简单操作
4 反转单向链表(非递归实现) 思路: 图1 非递归反转链表 如图1所示,假设已经反转了前面的若干节点,且前一段链表的头节点指针为pre,则现在要做的事情是首先保存当前节点cur后面的链表,然后让当前节点cur的指针与后面的节点断开(step1),接下来再将当前节点的next指针指向前一段链表的头节点pre (step2)。处理完当前节点的连接反转后,所有转载 2013-07-03 13:56:28 · 707 阅读 · 0 评论