数据结构与算法
文章平均质量分 73
小小小燕子Yedda
这个作者很懒,什么都没留下…
展开
-
排序算法--归并排序(MergeSort)
//归并排序的特点:递归的应用//需要准确并深入的理解递归的思想#include #include # define NUM 8using namespace std;void Msort(int* a, int*tmpa, int left, int right);int* MergeSort(int* a, int N);void Merge(int* a , int* tm原创 2017-04-17 10:07:13 · 283 阅读 · 0 评论 -
回文数
回文数做个练习,好久没有自己思考算法了#include #include using namespace std;bool symmetry_judge(int num){ if(num==0) return false; vector vec; while(num>0) { vec.push_back(num%10); num/=10; } int原创 2017-07-24 21:50:09 · 257 阅读 · 0 评论 -
循环链表,栈,队列,链表实现
明天要面试inginging发现把代码放在博客里翻看的时候,好方便,所以花点时间来把自己认为基础的东西放过来,仅供自己复习复习1.循环链表#include #include #include /*1.建立一个具有n个链节点的循环链表2.确定第一个报数人的位置;3.不断从链表中删除节点,直到链表为空;*/typedef struct LNode{ int data原创 2017-07-20 16:42:49 · 554 阅读 · 0 评论 -
二叉树重构
#include #include using namespace std;//先验知识://前序:第一个数就是根节点//中序:根节点位于中间,刚好将其左右子树分开//运用方法:递归//找到根节点,将其数值放入value,递归的分别根据左右子树进行二叉树重建//根据函数已有的接口,因此,需要将左(右)子树的前序,中序分别用vector进行赋值//最后递归的对左右进行重建,方法原创 2017-04-25 16:08:32 · 301 阅读 · 0 评论 -
图-1
#include #include //#include typedef char VertexType; //顶点类型用户自定义typedef int EdgeType; //边上的权值类型用户自定义#define MAXVEX 100 //最大顶点数#define INFINITY 65535 //代表无穷大,用来表示不存在的边的权值为无穷大#def原创 2017-06-14 11:27:09 · 212 阅读 · 0 评论 -
图-深度优先广度优先,以及邻接表的创建
将上篇内容改成了C++版本,为了直接使用queue这个容器,只是为了自学而敲的//#include #include #include #include //#include //#include using namespace std;typedef char VertexType; //顶点类型用户自定义typedef int EdgeType; //边上的权值类型原创 2017-06-14 23:04:31 · 314 阅读 · 0 评论 -
贪心算法
按照自己的想法实现了一下:#include #include #include using namespace std;int main(){ vector things; int TotalWeight = 150; //vector weights, values; int numThing = 7; vector Index; char tmp = 'A'; i原创 2017-06-15 21:17:46 · 185 阅读 · 0 评论 -
八皇后问题
剑指offer上的思路,变换了下用来解决八皇后问题递归思想//为了简化问题,我们将原本应使用的二维数组,巧妙的转换成了一维数组//用ColumnIndex数组来表示,用ColumnIndex[i]来表示第i行,处于哪一列//数组我们初始化为,元素与下标相同//进行元素的全排列也就是0-7的全排列//然后对每一种情况进行判断:是否不在一个对角线上//满足条件,num++//为了保原创 2017-05-18 20:47:18 · 159 阅读 · 0 评论 -
链表应用--多项式加法、乘法
//链表学习:多项式应用//通过引入InsertPoly函数来完成加法乘法操作//以及类似功能的Creat()函数,使我的多项式按照指数下降的方式插入节点//而不需要在输入时人为的控制#include using namespace std;//多项式ADT链表实现的类型声明typedef struct Node* PtrToNode;struct Node{int Coefficient;int原创 2017-04-20 09:59:17 · 490 阅读 · 0 评论 -
快速排序+插入排序
//思想依然是:递归//关键:寻找枢纽元//方法:三值中值//问题,要是left==right时,如何用快速排序?该程序结合了插入排序#include //#define cutoff 3using namespace std;int Median3(int* a, int left, int right);int swap(int* t1, int* t2);void Qso原创 2017-04-17 22:30:34 · 994 阅读 · 0 评论 -
希尔排序(ShellSort)
//希尔排序:缩小增量排序//关键:增量序列的选择。不同的序列会影响算法的最坏运行时间//shell增量:ht=N/2(取下届),下届为(N^2)//Hibbard增量:1,3,7,...2^k-1,最坏运行时间下届为(N^3/2)//对于增量hk,所有相隔hk的元素都被排序//编程简单,运行时间分析复杂//本例使用shell增量#include using nam原创 2017-04-18 10:38:59 · 277 阅读 · 0 评论 -
快速选择排序(quickselect)--基于quicksort
//思想依然是:递归//关键:寻找枢纽元//方法:三值中值//问题,要是left==right时,如何用快速排序?该程序结合了插入排序//在快速排序的基础上,进行快速选择排序,最坏情况O(N2),最好情况O(N)//选择第m个最小元,对应位置m-1//对于快速选择排序,该算法节省的时间在于,它并没有对第m个数所在范围外的那一部分进行排序。。。。。//因此,输出的排序后数组,后半部分并原创 2017-04-18 09:30:54 · 549 阅读 · 0 评论 -
堆栈的区别
两次面试都被问到的问题说说堆栈的区别1.数据结构:堆其实就是树(如堆排序),一些数据结构比如说优先队列,它的底层其实就是用堆来实现的。栈(数据结构),一种先入后出的数据结构。2.堆栈空间分配栈(操作系统),由操作系统自动分配和释放,存放函数参数,局部变量等。操作方式类似于数据结构的栈堆(操作系统),由程序员进行分配和释放,若程序员不释放,则最后可能会由操作系统进行回收。原创 2017-09-01 10:28:10 · 1453 阅读 · 0 评论