数据结构与算法
文章平均质量分 76
csdwb
这个作者很懒,什么都没留下…
展开
-
各种排序算法总结(C语言)
/ / 不断更新,也欢迎大家补充! 一、冒泡排序(BubbleSort)1. 基本思想: 两两比较待排序数据元素的大小,发现两个数据元素的次序相反时即进行交换,直到没有反序的数据元素为止。2. 排序过程: 设想被排序的数组R[1..N]垂直竖立,将每个数据元素看作有重量的气泡,根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R,凡扫描到违反本原则的轻气泡,就使其向上"原创 2011-12-08 15:12:00 · 1181 阅读 · 1 评论 -
大端模式和小端模式的判别!
大端模式: 一般我们较习惯的模式,数值的高位存入低地址中,低位存入高地址中。如在16位的CPU中,一个整型占有2个字节,如0x1234,它存储在存储器的顺序是地址的低位存0x12,高位存0x34;小端模式: 与大端模式相反,数值的高位存入高地址,低位存入地址中。如条件同上,0x1234,它的存储的顺序是数值的高位0x12存入高地址,数值的低位0x34存入低地址。0x34,0x原创 2011-12-28 19:41:17 · 1000 阅读 · 1 评论 -
各种排序算法稳定性的探讨
首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保证排序前2个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。在简单形式化一下,如果Ai = Aj, Ai原来在位置前,排序后Ai还是要在Aj位置前。为了简便下面讨论的都是不降序排列的情形,对于不升序排列的情形讨论方法和结果完全相同。 其次,说一下稳定性的好处。排序算法如果是稳定的,那么从一个键上排序,然后再从另一个键原创 2011-12-28 19:22:20 · 1405 阅读 · 1 评论 -
BM算法图解
首先,先简单说明一下有关BM算法的一些基本概念。BM算法是一种精确字符串匹配算法(区别于模糊匹配)。BM算法采用从右向左比较 的方法,同时应用到了两种启发式规则,即坏字符规则 和好后缀规则 ,来决定向右跳跃的距离。BM算法的基本流程: 设文本串T,模式串为P。首先将T与P进行左对齐,然后进行从右向左比较 ,如下图所示: 若是某趟比较不匹配时,BM算法就采用两条启发原创 2011-12-20 11:08:58 · 2143 阅读 · 2 评论 -
单链表的建立与输出
1 #include 2 #include 3 #define LEN sizeof(struct node) 4 typedef struct node* Node; 5 struct node 6 { 7 int num; 8 struct node *next; 9 };10 11 int n = 0;12 //创建单链表13原创 2011-12-05 13:31:52 · 2347 阅读 · 0 评论 -
二叉树的深度优先遍历、广度优先遍历和非递归遍历
二叉树的遍历:D:访问根结点,L:遍历根结点的左子树,R:遍历根结点的右子树。给定一棵二叉树的前序遍历序列和中序遍历序列可以惟一确定一棵二叉树。二叉树的深度优先遍历的非递归的通用做法是采用栈,广度优先遍历的非递归的通用做法是采用队列。深度优先遍历二叉树1. 中序遍历(LDR)的递归算法:若二叉树为空,则算法结束;否则: 中序遍历根结点的左子树; 访问根结原创 2011-12-17 20:48:36 · 4660 阅读 · 1 评论 -
Map与Hash_map
Hash_map 0 为什么需要hash_map 用过map吧?map提供一个很常用的功能,那就是提供key-value的存储和查找功能。例如,我要记录一个人名和相应的存储,而且随时增加,要快速查找和修改:岳不群-华山派掌门人,人称君子剑张三丰-武当掌门人,太极拳创始人东方不败-第一高手,葵花宝典...这些信息如果保存下来并不复杂,但是找起来比较麻烦原创 2011-12-18 11:38:07 · 688 阅读 · 0 评论 -
函数递归调用详解
递归问题是一个说简单也简单,说难也有点难理解的问题.我想非常有必要对其做一个总结.首先理解一下递归的定义,递归就是直接或间接的调用自身.而至于什么时候要用到递归,递归和非递归又有那些区别?又是一个不太容易掌握的问题,更难的是对于递归调用的理解.下面我们就从程序+图形的角度对递归做一个全面的阐述.我们从常见到的递归问题开始:1 阶乘函数#include using names原创 2011-12-18 13:16:47 · 4969 阅读 · 3 评论 -
算法时间复杂度分析
摘要 本文论述了在算法分析领域一个重要问题——时间复杂度分析的基础内容。本文将首先明确时间复杂度的意义,而后以形式化方式论述其在数学上的定义及相关推导。从而帮助大家从本质上认清这个概念。前言 通常,对于一个给定的算法,我们要做 两项分析。第一是从数学上证明算法的正确性,这一步主要用到形式化证明的方法及相关推理模式,如循环不变式、数学归纳法等。而在证明算法是正确的原创 2011-12-18 12:51:39 · 1203 阅读 · 0 评论 -
Hash原理
1. 引言 哈希表(Hash Table)的应用近两年才在NOI中出现,作为一种高效的数据结构,它正在竞赛中发挥着越来越重要的作用。 哈希表最大的优点,就是把数据的存储和查找消耗的时间大大降低,几乎可以看成是常数时间;而代价仅仅是消耗比较多的内存。然而在当前可利用内存越来越多的情况下,用空间换时间的做法是值得的。另外,编码比较容易也是它的特点之一。 哈希表原创 2011-12-18 11:28:09 · 763 阅读 · 0 评论 -
有8匹马,只有四个赛道,如何挑出前三名?
基本想法: 假设马被编号1~8,第一轮,先让1~4号马跑,第二轮,再让5~8号马跑,分别得到两次的前三名(假设编号为1-3和5-7的马赢得了比赛,并且排名和它们的编号对应,因为第四名不可能是所有马当中的前三名,所以舍弃),这样得到了6匹马(1-3,5-7),再下来,第三轮,让1,2, 5,6四匹马跑,结果次序只有下面几种情况:1 2 5 6 ……①1 5 2 6……②原创 2011-12-31 12:00:06 · 4873 阅读 · 2 评论