数据结构
文章平均质量分 83
ranqy374
这个作者很懒,什么都没留下…
展开
-
各种排序算法时间复杂度、稳定性、初始序列是否对元素比较次数有关
怎么记忆稳定性:总过四大类排序:插入、选择、交换、归并(基数排序暂且不算)比较高级一点的(时间复杂度低一点得)shell排序,堆排序,快速排序(除了归并排序)都是不稳定的,在加上低一级的选择排序是不稳定的。比较低级一点的(时间复杂度高一点的)插入排序, 冒泡排序,归并排序,基数排序都是稳定的。(4种不稳定,4种稳定)。怎么记忆初始序列是否对元素的比较原创 2013-08-30 10:48:54 · 34617 阅读 · 3 评论 -
数据结构—线性表之顺序表的操作
数据结构中,线性表之顺序表的操作,包括初始化、创建顺序表、插入,删除,查找#include #include /** * @brief 线性表的顺序存储结构,在存、读数据时不管是哪个位置,时间复杂度都为O(1) * 而插入或删除时,时间复杂度为O(n) * 比较适合元素个数不太变化,而更多是存取数据的应用 *///顺序表的结构定义#defi原创 2013-06-27 16:27:34 · 878 阅读 · 0 评论 -
数据结构—单链表的操作
单链表的操作:包括创建(头插法、尾插法)、删除结点、添加结点、单链表转置、寻找两个链表的共同结点、单链表创建环、判断单链表是否有环、解环(待添加)#include #include //线性表的单链表存储结构typedef struct Node{ int data; struct Node *next;}SNode;//单链表的初始化SNode* LinkedLi原创 2013-06-28 14:32:26 · 928 阅读 · 0 评论 -
二叉树创建和遍历详细分析
对于二叉树,原来始终不明白用递归前序创建,前序遍历究竟是怎么回事,今天晚上好好琢磨了下。两种不同的方法:1、可以考虑把递归调用的函数考虑为调用不同的函数,方便分析。2,如果考虑为调用同一个函数时,递归是用栈来实现的,用栈来分析的话就比较方便。对于如图所示的一个二叉树,前序创建时的代码为:/** * @brief 递归前序创建二叉树 * @attent原创 2013-07-02 22:56:47 · 1057 阅读 · 0 评论 -
各种排序算法的稳定性和时间复杂度小结
选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。冒泡法: 这是最原始,也是众所周知的最慢的算法了。他的名字的由来因为它的工作看来象是冒泡: 复杂度为O(n*n)。当数据为正序,将不会有交换。复杂度为O(0)。直接插入排序:O(n*n)选择排序:O(n*n)快速排序:平均时间复转载 2013-05-28 16:52:34 · 1170 阅读 · 0 评论 -
数据结构—双链表的操作
/** * @brief 双链表的初始化,建立,插入,查找,删除 * @author ranqy374 * @date 2013.6.26 */#include #include //双链表结点类型的定义typedef struct Node { int data; struct Node *prior; struct Node *next;}DLN原创 2013-06-28 16:57:09 · 676 阅读 · 0 评论 -
用rand()和srand()产生伪随机数的方法总结
标准库(被包含于中)提供两个帮助生成伪随机数的函数:函数一:int rand(void);从srand (seed)中指定的seed开始,返回一个[seed, RAND_MAX(0x7fff))间的随机整数。函数二:void srand(unsigned seed);参数seed是rand()的种子,用来初始化rand()的起始值。可以认为rand()在每次被调用的转载 2013-07-01 10:08:31 · 694 阅读 · 0 评论