
数据结构
追艺_年华
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
PTA 6-1 循环单链表区间删除(15 分)
本题要求实现带头结点的循环单链表的创建和单链表的区间删除。L是一个带头结点的循环单链表,函数ListCreate_CL用于创建一个循环单链表,函数ListDelete_CL用于删除取值大于min小于max的链表元素。 函数接口定义: Status ListCreate_CL(LinkList &CL); void ListDelete_CL(LinkList &CL,El原创 2017-11-07 20:32:09 · 815 阅读 · 0 评论 -
数据结构排序算法代码实现
#include using namespace std; #define MAXN 100000 #define maxsize 100 typedef int Keytype; typedef struct{ Keytype key; InfoType data; }RedType; typedef struct{ RedType r[maxsize+1]; int原创 2017-12-21 18:04:27 · 1220 阅读 · 0 评论 -
各类排序算法的比较
经过这几天对数据结构中各种排序算法的学习,对各类排序算法有了初步的了解。参考了一位大能整理的排序算法讲解,各类排序算法从算法的实现方法和策略选取上给出了两种分类标准: 各类算法的复杂度与稳定性比较如下: 内部排序方法分类:复杂度O(n2)的简单排序方法,O(nlogn)的高效排序方法(比较法的理论下界),O(d*(n+rd))的基数排序方法. Ø各排序方法各有优缺转载 2017-11-24 23:34:54 · 401 阅读 · 0 评论 -
简单选择排序及其改进算法
选择排序是一种最为直观的简单排序方法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)。 算法思路: (1)从待排序序列中,找到关键字最小的元素; (2)如果最小元素不是待排序序列原创 2017-11-22 19:57:31 · 1220 阅读 · 0 评论 -
排序算法-归并排序
归并排序(Merge Sort) 归并排序也是一类高效的基于比较的排序算法,是分治思想的典型应用。它的工作原理是首先将未排序序列分成n份元素个数为1的子序列(个数为1被认为是有序的),然后进行合并,最后子序列数为1即已排序序列。归并排序是时间复杂度为次平方中唯一的稳定的排序算法。 归并排序的一般步骤: 1.将原始序列分成n份,每份元素个数为1。 2.反复进行有序序列的合并,原创 2017-12-21 17:48:08 · 261 阅读 · 0 评论 -
数据结构各类排序算法分析
从算法的实现方法和策略选取上给出了两种分类标准: 各类排序算法性能及稳定性分析: Ø内部排序方法分类:复杂度O(n2)的简单排序方法,O(nlogn)的高效排序方法(比较法的理论下界),O(d*(n+rd))的基数排序方法. Ø各排序方法各有优缺点,具体选择时考虑稳定性、记录大小(小则简单方法即可)、原始数据是否基本转载 2017-12-21 17:41:11 · 422 阅读 · 0 评论 -
排序算法之快速排序
快速排序原理: 1.用最左侧元素作“枢轴”,存入“哨所” 2.设low和high指向两端 3.high向左移动,一旦遇到小于枢轴的元素,则将其移动到左侧,放入low指向的位置; 4.low向右移动,一旦遇到大于枢轴的元素,则将其移动到右侧,放入high指向的位置; high和low从两侧交替向中间移动,直至low=high. 左侧均小于等于枢轴,右侧均大于等于枢轴,将枢轴记录填入重叠位置原创 2017-12-10 18:36:51 · 263 阅读 · 0 评论 -
数据结构算法-插入排序
插入排序算法有两种,一种是直接插入排序,一种是折半插入排序直接插入排序(straight insertion sort):每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。第一趟比较前两个数,然后把第二个数按大小插入到有序表中; 第二趟把第三个数据与前两个数从后向前扫描,把第三个数按大小插入到有序表中;依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程。直接插入...原创 2017-11-22 17:24:22 · 1403 阅读 · 0 评论 -
畅通工程之局部最小花费问题(prime算法)
下面讲一个prime算法的实例: 某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出“畅通工程”的目标:使整个地区任何两个城镇间都可以实现快速交通(但不一定有直接的快速道路相连,只要互相间接通过快速路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建快速路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全地区畅通需要的最低成本。 输入格式:原创 2017-11-14 20:04:00 · 692 阅读 · 0 评论 -
最小生成树(prime算法)
Prim算法 1.概览 普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树。意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (graph theory)),且其所有边的权值之和亦为最小。该算法于1930年由捷克数学家沃伊捷赫·亚尔尼克(英语:Vojtěch Jarník)发现;并在1957年由美国计算机科学家罗原创 2017-11-14 19:42:58 · 688 阅读 · 0 评论 -
图的遍历
#include typedef enum {false, true} bool; #define MaxVertexNum 10 /* 最大顶点数设为10 */ #define INFINITY 65535 /* ∞设为双字节无符号整数的最大值65535*/ typedef int Vertex; /* 用顶点下标表示顶点,为整型 */ typedef int WeightT原创 2017-11-14 19:25:14 · 531 阅读 · 0 评论 -
PTA 寻找大富翁(25分)
7-2 寻找大富翁(25 分) 2015年胡润研究院的调查显示,截至2014年9月,个人资产在600万元以上高净值人群达290万人。假设给出N个人的个人资产值,请快速找出资产排前M位的大富翁。 输入格式: 输入首先给出两个正整数N(≤106)和M(≤10),其中N为总人数,M为需要找出的大富翁数;接下来一行给出N个人的个人资产值,以百万元为单位,为不超过长整型范围的整数原创 2017-11-28 18:39:06 · 4554 阅读 · 0 评论 -
ADT - 栈
#include #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define OVERFLOW -1 #define INITLENGTH 100 #define原创 2017-11-09 18:09:54 · 220 阅读 · 0 评论 -
ADT- 双向链表
#include #include typedef int ElemType; //////////////////////////////////////////// // 定义双链表结点类型 typedef struct Node { ElemType data; struct Node *prior; //指向前驱结点 struct Node原创 2017-11-09 18:07:03 · 4141 阅读 · 0 评论 -
单链表和顺序表的逆置问题
单链表的创建与逆置 Status ListCreate_L(LinkList &L,int n) { LNode *rearPtr,*curPtr; //一个尾指针,一个指向新节点的指针 L=(LNode*)malloc(sizeof (LNode)); if(!L)exit(OVERFLOW); L->next=NULL; //先原创 2017-11-08 21:53:30 · 396 阅读 · 0 评论 -
7-1 两个有序链表序列的合并
7-1 两个有序链表序列的合并(20 分) 已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的并集新非降序链表S3。 输入格式: 输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。 输出格式: 在一行中输出合并后新的非降序链表,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL原创 2017-11-08 21:48:46 · 486 阅读 · 0 评论 -
顺序表的基本操作
#include #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define OVERFLOW -1 #define LISTINIC原创 2017-11-07 22:01:14 · 241 阅读 · 0 评论 -
PTA 排座位(25 分)
布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位。无论如何,总不能把两个死对头排到同一张宴会桌旁!这个艰巨任务现在就交给你,对任何一对客人,请编写程序告诉主人他们是否能被安排同席。 输入格式: 输入第一行给出3个正整数:N(≤100),即前来参宴的宾客总人数,则这些人从1到N编号;M为已知两两宾客之间的关系数;K为查询的条数。随后M行,每行给出一对宾客之间的关系,格式为:宾客1原创 2017-11-07 20:53:02 · 1173 阅读 · 0 评论 -
ADT-二叉树
#include #include #include //函数状态码定义 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define OVERFLOW -1 #define INFEASIBLE -2 #define NULL 0 typedef int Status原创 2017-11-14 18:37:42 · 629 阅读 · 0 评论