数据结构与算法分析
文章平均质量分 58
付家明1
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ArrayList源码解析
前言: ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,ArrayList就是传说中的动态数组,就是Array的复杂版本,它提供了如下一些好处:动态的增加和减少元素、灵活的设置数组的大小等。 一:ArrayList的继承结构与定义:原创 2017-01-04 10:50:40 · 309 阅读 · 0 评论 -
排序总结(一)
各种排序的性能总结 一:冒泡排序 原理:原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换,这样一趟过去后,最大或最小的数字被交换到了最后一位,然后再从头开始进行两两比较交换,直到倒数第二位时结束。冒泡排序对n个项目需要O(n^2)的比较次数,且可以原地排序。尽管这个算法是最简单了解和实现的排序算法之一,但它对于少数元素之外的数列排序是很没有效率的。 例子: 元数据:1原创 2016-03-13 19:39:34 · 512 阅读 · 0 评论 -
排序总结(二)
前言:本篇总结插入排序和希尔排序,把两种放在一起讨论的原因,两种排序的算法的思想是很相似的,可以说希尔排序就是插入排序的改进版本。一,插入排序 插入排序(Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排原创 2016-03-19 17:34:52 · 486 阅读 · 0 评论 -
链表总结
链表是最基本的数据结构,面试官也常常用链表来考察面试者的基本能力,而且链表相关的操作相对而言比较简单,也适合考察写代码的能力。链表的操作也离不开指针,指针又很容易导致出错。综合多方面的原因,链表题目在面试中占据着很重要的地位。本文对链表相关的面试题做了较为全面的整理,希望能对找工作的同学有所帮助。链表结点声明如下:struct ListNode{ int m_nKey转载 2015-06-03 12:46:52 · 299 阅读 · 0 评论 -
线索二叉树
一、线索二叉树的原理 通过考察各种二叉链表,不管儿叉树的形态如何,空链域的个数总是多过非空链域的个数。准确的说,n各结点的二叉链表共有2n个链域,非空链域为n-1个,但其中的空链域却有n+1个。优点:遍历更快速、使用内存更少如下图所示。 因此,提出了一种方法,利用原来的空链域存放指针,指向树中其他结点。这种指针称为线索。转载 2015-05-28 12:31:18 · 364 阅读 · 0 评论 -
AVL树的旋转分析与实现
AVL树是带有平衡条件的二叉查找树。这个平衡条件必须要容易保持,而且它须保证树的深度是O(log N).**一棵AVL树是其每个节点的左子树和右子树的高度最多插1的二叉查找树**当原创 2015-05-04 23:22:20 · 518 阅读 · 0 评论 -
二叉树的递归遍历
#include #include ng namespace stdusi;struct node{ struct node * lchild; struct node * rchild; int data;}node;typedef struct node * BTREE;/*BTREE CreateBT(int v,BTREE ltree,BTREE rt原创 2015-05-16 16:20:04 · 421 阅读 · 0 评论 -
时间复杂度
最近在跟数据结构的课程,发现了这道题从n^3刷到n^2最后刷到nlogn,觉得对于理解算法的时间复杂度比较有帮助,于是记录下来,以便以后查看。给定K个整数组成的序列{ N1, N2, ..., NK },“连续子列”被定义为{ Ni, Ni+1, ..., Nj },其中 1 输入格式:输入第1行给出正整数 K (输出格式:在一行中输出最大子列和。如果序原创 2015-01-10 21:50:56 · 446 阅读 · 0 评论 -
中缀表达式转后缀表达式
#include #include #define ElementType chartypedef struct Node *PtrToNode;typedef PtrToNode Stack;typedef struct Node{ ElementType Element; PtrToNode Next;};int IsEmpty(Stack S);Stac转载 2015-04-25 14:57:56 · 373 阅读 · 0 评论 -
栈的实现
比较简单,直接上代码了#ifndef _Stack_hstruct Node;typedef int ElementType;typedef struct Node * PtrToNode;typedef PtrToNode Stack;int IsEmpty(Stack S);Stack CreateStack(void);void DisposeStack(St原创 2015-04-18 23:09:11 · 366 阅读 · 0 评论 -
队列的数组实现
#ifndef QUEUE_H_INCLUDED#define QUEUE_H_INCLUDEDstruct QueueRecord;typedef struct QueueRecord * Queue;int IsEmpty(Queue);int IsFull(Queue Q);Queue CreateQueue(int MaxElements);void DisposeQueu原创 2015-05-02 16:15:50 · 417 阅读 · 1 评论 -
ArrayList源码解析
前言: ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,ArrayList就是传说中的动态数组,就是Array的复杂版本,它提供了如下一些好处:动态的增加和减少元素、灵活的设置数组的大小等。 一:ArrayList的继承结构与定义:原创 2017-01-04 10:51:03 · 225 阅读 · 0 评论
分享