数据结构
onesilver
大道至简,知易行难
展开
-
数据结构-两种常见的查找算法
数据结构-两种常见的查找算法查找是在大量的信息中寻找一个特定的信息元素,在计算机应用中,查找是常用的基本运算顺序查找算法算法思想:顺序查找也称为线形查找,就是从表的一端开始逐个扫描表中各元素,直到找到目标,或者到达表的令一端即查找失败。时间复杂度为:O(n)算法实现 算法的c++实现,实现代码来自王治和教授数据结构课堂的总结enum error_code{原创 2018-01-21 11:50:05 · 512 阅读 · 0 评论 -
数据结构-排序算法之插入排序(直接插入,二分插入,希尔,表插入)
数据结构-排序算法之插入排序(直接插入,二分插入,希尔,表插入)排序算法: 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减排列起来的操作。 插入排序:排序过程的每一步将一个待排序的记录按其排序码值的大小插到前面已排好序的部分中的适当位置,知道全部记录插完为止。直接插入排序:使用顺序查找寻找下一个待排元素的位置。二分插入排序:使用二分查找寻找下一个待排元素的位置原创 2018-01-22 21:46:18 · 532 阅读 · 0 评论 -
数据结构-顺序栈的实现
数据结构-顺序栈栈是一种受限的线性表,其受限型体现在所有插入与删除都在表的同一端进行,这一端也称为栈顶。主要以下几个操作向栈内压入一个元素push()从栈顶弹出一个元素(删除)pop()判断栈是否为空empty()返回栈顶但不删除成员top()本例中栈定义通过C++模板类实现,实现思路及代码来自王治和教授数据结构课堂的总结栈的c++实现const int ma原创 2018-01-16 22:59:08 · 317 阅读 · 0 评论 -
数据结构-二叉树
二叉树的定义:一颗二叉树是一个结点集合。这个集合要么为空,要么满足以下条件:它仅有一个被称为根的结点。除了根结点,其他结点可以被分为两个不相交的子集T1和T2,它们也是二叉树,分别叫做根的左子树和右子数。满二叉树定义:一颗深度为K且有2**k-1个结点的二叉树称为满二叉树。完全二叉树定义:一颗深度为k的完全二叉树满足以下两点:叶子结点只可能在层次最大的两层上出现对任一结点原创 2018-01-24 20:09:51 · 278 阅读 · 0 评论 -
数据结构-排序算法之交换排序(冒泡排序快速排序)
数据结构-排序算法之交换排序(冒泡排序,快速排序)排序算法: 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减排列起来的操作。 交换排序:所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。冒泡排序:从左到右扫描要排序的元素,比较两个相邻元素的排序码,当他原创 2018-01-24 21:16:03 · 866 阅读 · 0 评论 -
数据结构-队列的实现
数据结构-队列队列是一种受限的线性表,其限制性在于它的插入操作在表的一端(也称队尾),删除操作在表的另一端(也称为队首),其主要操作如下:append(insert) 入队serve(delete)出队retrieve 读队首empty 判队为空front永远指向队首元素,队首是允许删除的一端rear永远指向队尾元素,队尾是允许插入的一端利用数组实现顺序队列将面临“假溢出原创 2018-01-17 20:43:29 · 227 阅读 · 0 评论 -
数据结构-重要的递归算法
数据结构-递归和分治递归算法:在计算机科学中是指一种通过重复将问题分解为同类的子问题而解决问题的方法,函数自己调用自己,或者是函数调用了一系列其他函数,而其中的一个函数最终又再次调用了第一个函数。分治思想:将一个规模为N的问题,可以分解为k个规模较小的子问题,这些问题相互独立且与原问题相同,可以递归的求解这些问题,然后将各个自问题的解合并得到原问题的解。递归应用-求解n个阶乘问题i原创 2018-01-18 22:21:37 · 706 阅读 · 0 评论 -
数据结构-重要的回溯算法
数据结构-重要的回溯算法回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标回溯基本思想:通过构造部分解来寻求一个问题的完全解。而且部分解仍然满足问题的约束条件。算法最后将部分解扩展为完全解,当有不符合约束条件的情况发生时,算法通过丢弃最近构造的部分解返原创 2018-01-18 22:38:17 · 980 阅读 · 0 评论