- 博客(16)
- 收藏
- 关注
原创 归并排序
二路归并排序时间复杂度:O(nlogn)O(nlog n) 空间复杂度:O(n)O(n) 稳定性:稳定 Note: 实现时应注意空间复杂度的控制。代码:#include <iostream>#include <stdio.h>#define MAXSIZE 20using namespace std;int mSq[MAXSIZE],tempSq[MAXSIZE];void Merge
2017-07-31 09:59:43 272
原创 选择排序 (堆排序)
1. 简单选择排序时间复杂度:O(n2)O(n^2) 空间复杂度:O(1)O(1) 稳定性:不稳定代码:#include <iostream>#include <stdio.h>using namespace std;int minValue(int s[],int Start,int End){ int minSig=Start; for(int i=Start+1;i<
2017-07-30 22:16:23 223
原创 交换排序 / 快速排序
1. 冒泡排序时间复杂度:最好 O(n)O(n),最坏和平均都是 O(n2)O(n^2),注意平均时间复杂度的理解。 空间复杂度:O(1)O(1) 稳定性:稳定的 时间复杂度的理解可借鉴: http://www.cnblogs.com/jiqingwu/p/bubble_sort_analysis.html代码:#include <iostream>#include <stdio.h>u
2017-07-30 22:07:03 325
原创 插入排序
1. 直接插入排序空间复杂度: O(1)O(1) (平均)时间复杂度: O(n2)O(n^2) 稳定性:稳定的排序算法 适用场景:当待排序记录的数量n很小时,这是一种很好的排序方法。但是,通常当排序列中的记录数n很大,则不宜采用直接插入排序。代码:#include <iostream>#include <stdio.h>#define MAXSIZE 20typedef int keyT
2017-07-30 21:56:21 217
原创 平衡二叉树 AVL
笔记: 1、 在包含有n个结点的平衡树上查找的时间复杂度为 O(log n),深度也和O(log n)同数量级。 在平衡树上进行查找的过程和排序树相同,因此,在查找过程中和给定值进行比较的关键字个数不超过树的深度。 2、 二叉排序树又称为二叉查找树。 3、 平衡二叉树必须是二叉查找树。 4、 AVL树的查找、插入、删除操作在平均和最坏的情况下都是O(logn),这得益于它时刻维护着
2017-07-30 21:38:40 330
原创 关于free与malloc的使用
free与malloc的使用应一一对应。也就是如果用malloc一次分配了几个连续的地址后,只需free这块地址的首地址就可以将这块连续的地址全部free,但这些地址里的内容不会发生改变。 例如,p=(LinkList)malloc(sizeof(LNode)*100); 分配了100个LinkList型的地址,free(p)就可以了,不需要free 100次。但是需要注意的是,free(p)以后,
2017-07-16 22:54:46 377
原创 循环链表的简单实现
这里实现的是设定尾指针的循环链表。#include <iostream>#include <cstdio>#include <malloc.h>typedef int CElemType;using namespace std;typedef struct CNode{ CElemType data; struct CNode *next;}CNode,* CLinkLi
2017-07-16 22:28:44 189
原创 单链表队列的简单实现
单链表队列为空的判定条件:LinkQueue.front=LinkQueue.rear 单链表队列不存在的判定条件:LinkQueue.front=LinkQueue.rear=NULL#include <iostream>#include <cstdio>#include <malloc.h>typedef int QElemType;typedef bool Status;using
2017-07-16 22:11:04 418
原创 顺序栈的简单实现
顺序栈需要牺牲一个地址空间来存放Top指针。 栈空的判定条件:SqStack.base=SqStack.Top 栈不存在的判定条件:SqStack.base=NULL#include <iostream>#include <cstdio>#include <malloc.h>#define STACK_INIT_SIZE 100#define STACK_INCREMENT 10typ
2017-07-16 21:53:49 508
原创 双链表的简单实现
#include <iostream>#include <cstdio>#include <malloc.h>typedef int ElemType;using namespace std;typedef struct DuLNode{ ElemType data; struct DuLNode *prior; struct DuLNode *next;}DuL
2017-07-16 21:46:23 233
原创 单链表的简单实现
#include <iostream>#include <cstdio>#include <malloc.h>typedef int ElemType;typedef bool Status;using namespace std;typedef struct LNode{ ElemType data; struct LNode *next;}LNode,*LinkLi
2017-07-13 10:11:06 271 1
原创 阿牛的EOF牛肉串
今年的ACM暑期集训队一共有18人,分为6支队伍。其中有一个叫做EOF的队伍,由04级的阿牛、XC以及05级的COY组成。在共同的集训生活中,大家建立了深厚的友谊,阿牛准备做点什么来纪念这段激情燃烧的岁月,想了一想,阿牛从家里拿来了一块上等的牛肉干,准备在上面刻下一个长度为n的只由”E” “O” “F”三种字符组成的字符串(可以只有其中一种或两种字符,但绝对不能有其他字符),阿牛同时禁止在串中出现O
2017-07-12 14:51:30 192
原创 LELE的RPG难题 题解
人称“AC女之杀手”的超级偶像LELE最近忽然玩起了深沉,这可急坏了众多“Cole”(LELE的粉丝,即”可乐”),经过多方打探,某资深Cole终于知道了原因,原来,LELE最近研究起了著名的RPG难题: 有排成一行的n个方格,用红(Red)、粉(Pink)、绿(Green)三色涂每个格子,每格涂一色,要求任何相邻的方格不能同色,且首尾两格也不同色.求全部的满足要求的涂法. 以上就是著名的RPG难题
2017-07-11 20:11:27 1064
原创 一只小蜜蜂... 的题解
#include <iostream>#include <cstdio>#define mMax 50using namespace std;long long arr[mMax];int main(){ int N; scanf("%d",&N); arr[0]=1,arr[1]=2; while(N--) { int a,b;
2017-07-11 17:41:19 304 1
原创 Petya and Inequiations 题解
Little Petya loves inequations. Help him find n positive integers a1, a2, ..., an, such that the following two conditions are satisfied:a12 + a22 + ... + an2 ≥ xa1 + a2 + ... + an ≤ yInput
2017-07-11 17:21:40 538
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人