随笔分类 - 数据结构与算法
摘要:http://zhangshijuyouyou.blog.163.com/blog/static/12291144820142794641590/一:操作系统1. 进程的有哪几种状态,状态转换图,及导致转换的事件。2. 进程与线程的区别。3. 进程通信的几种方式。4. 线程同步几种方式。(一定要会写...
阅读全文
摘要:http://blog.itpub.net/23241791/viewspace-1119055/作者:July--结构之法算法之道blog之博主。时间:2010年10月-2012年9月(一直在收录本blog最新updated文章)。出处:http://blog.csdn.net/v_JULY_v。...
阅读全文
摘要:http://blog.csdn.net/walkinginthewind/article/details/7393134链表是最基本的数据结构,面试官也常常用链表来考察面试者的基本能力,而且链表相关的操作相对而言比较简单,也适合考察写代码的能力。链表的操作也离不开指针,指针又很容易导致出错。综合多方面的原因,链表题目在面试中占据着很重要的地位。本文对链表相关的面试题做了较为全面的整理,希望能对找工作的同学有所帮助。链表结点声明如下:structListNode{ int m_nKey; ListNode * m_pNext;};题目列表:1.求单链表中结点的个数2. 将单链表反转3. 查..
阅读全文
摘要:完全二叉树: 一种是:二叉树的所有子树要么没有孩子,要么一定有左孩子。另一种是:二叉树要么没有子树,要么一定左右子树都有若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。平衡二叉树:AVLAVL是最先发明的自平衡二叉查找树算法。在AVL中任何节点的两个儿子子树的高度最大差别为一,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是O(log n)。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。红黑树红黑树是每个节点都带有颜色属性的二叉查找树,颜色或红色或黑色。在二叉查找树强制.
阅读全文
摘要:http://www.cnblogs.com/waytofall/archive/2012/04/10/2439820.html求子数组的最大和题目描述:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。思路1 当我们加上一个正数时,和会增加;当我们加上一个负数时,和会减少。如果当前得到的和是个负数,那么这个和在接下来的累加中应该抛弃并重新清零,
阅读全文
摘要:http://www.cnblogs.com/newpanderking/archive/2012/10/18/2729552.html拓 扑 排 序 一个较大的工程往往被划分成许多子工程,我们把这些子工程称作活动(activity)。在整个工程中,有些子工程(活动)必须在其它有关子工程完成之后才能开始,也就是说,一个子工程的开始是以它的所有前序子工程的结束为先决条件的,但有些子工程没有先决条件,可以安排在任何时间开始。为了形象地反映出整个工程中各个子工程(活动)之间的先后关系,可用一个有向图来表示,图中的顶点代表活动(子工程),图中的有向边代表活动的先后关系,即有向边的起点的活动是终点活动的
阅读全文
摘要:http://blog.csdn.net/walkinginthewind/article/details/7518888树是一种比较重要的数据结构,尤其是二叉树。二叉树是一种特殊的树,在二叉树中每个节点最多有两个子节点,一般称为左子节点和右子节点(或左孩子和右孩子),并且二叉树的子树有左右之分,其次序不能任意颠倒。二叉树是递归定义的,因此,与二叉树有关的题目基本都可以用递归思想解决,当然有些题目非递归解法也应该掌握,如非递归遍历节点等等。本文努力对二叉树相关题目做一个较全的整理总结,希望对找工作的同学有所帮助。二叉树节点定义如下:struct BinaryTreeNode{ int m_n.
阅读全文
摘要:http://kimibob.blog.163.com/blog/static/163873051201153093851369/平衡二叉树(Balanced binary tree)是由阿德尔森-维尔斯和兰迪斯(Adelson-Velskii and Landis)于1962年首先提出的,所以又称为AVL树。定义:平衡二叉树或为空树,或为如下性质的二叉排序树:(1)左右子树深度之差的绝对值不超过1;(2)左右子树仍然为平衡二叉树.平衡因子BF=左子树深度-右子树深度.平衡二叉树每个结点的平衡因子只能是1,0,-1。若其绝对值超过1,则该二叉排序树就是不平衡的。如图所示为平衡树和非平衡树示意图
阅读全文
摘要:1)判断数据在各位的大小,排列数据;2)根据1的结果,判断数据在十分位的大小,排列数据。如果数据在这个位置的余数相同,那么数据之间的顺序根据上一轮的排列顺序确定;3)依次类推,继续判断数据在百分位、千分位......上面的数据重新排序,直到所有的数据在某一分位上数据都为0。#include #include #include #include int pre_process_data(int array[], int length, int weight){ int index; int value = 1; assert(NULL != array && 0 != lengt
阅读全文
摘要:#include #include void swap(int *a, int *b){ int c; c = *a; *a = *b; *b = c;}void set_sorted_value(int array[], int length){ int index = length; if(length 1) { if(array[index >> 1] >= array[index]) break; swap(&(array[index >> 1]), &array[index]); index >>= 1; }}void con
阅读全文
摘要:1)把0~length-1的数组分成左数组和右数组 2)对左数组和右数组进行迭代排序 3)将左数组和右数组进行合并,那么生成的整个数组就是有序的数据数组(关键)#include #include #include #include void merge(int *array, int start, int middle, int end){ int left = start; int right = middle + 1; int length = end - start + 1; int *p = malloc(sizeof(int) * length); assert(NULL != p.
阅读全文
摘要:把数组的第一个数据作为比较的原点,比该数据小的数据排列在左边,比该数据大的数据排列在右边#include #include #include #include void swap(int *a, int *b){ int c; c = *a; *a = *b; *b = c;}void _quick_sort(int array[], int start, int end){ int middle; if(start > end) return; middle = get_middle1(array, start, end); //middle = get_middle2(array,
阅读全文
摘要:LRU(least recently used)最少使用。假设 序列为 4 3 4 2 3 1 4 2物理块有3个 则首轮 4调入内存 4次轮 3调入内存 3 4之后 4调入内存 4 3之后 2调入内存 2 4 3之后 3调入内存 3 2 4之后 1调入内存 1 3 2(因为最少使用的是4,所以丢弃4)之后 4调入内存 4 1 3(原理同上)最后 2调入内存 2 4 1又如:考虑下述页面走向:1,2,3,4,2,1,5,6,2,1,2,3,7,6,3,2,1,2,3,6发生缺页中断的次数为15。在LRU算法中,最少使用的页面被先换出。当页6要调入时,内存的状态为5、2、1,考查页6之前调入的页
阅读全文
摘要:前序遍历: 1.访问根节点 2.前序遍历左子树 3.前序遍历右子树中序遍历: 1.中序遍历左子树 2.访问根节点 3.中序遍历右子树后序遍历: 1.后序遍历左子树 2.后序遍历右子树 3.访问根节点
阅读全文
摘要:http://blog.csdn.net/feixiaoxing/article/category/878822各种排序算法的总结和比较1 快速排序(QuickSort)快速排序是一个就地排序,分而治之,大规模递归的算法。从本质上来说,它是归并排序的就地版本。快速排序可以由下面四步组成。(1)如果不多于1个数据,直接返回。(2)一般选择序列最左边的值作为支点数据。(3)将序列分成2部分,一部分都大于支点数据,另外一部分都小于支点数据。(4)对两边利用递归排序数列。快速排序比大部分排序算法都要快。尽管我们可以在某些特殊的情况下写出比快速排序快的算法,但是就通常情况而言,没有比它更快的了。快速排序
阅读全文