自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(10)
  • 资源 (3)
  • 收藏
  • 关注

原创 排序二叉树的实现

在计算机科学中,二叉树是一种重要的非线性的数据结构。每个结点的度均小于等于2,通常子树称为左子树和右子树。而排序二叉树是二叉树中的一种,其满足:1. 如左子树不为空,那么左子树上的结点的值都小于其根上的值;2. 如右子树不为空,那么右子树上的结点的值都大于其根上的值; 3. 其子树也是一个排序二叉树。下面用递归的方式来插入一个结点来满足上述的要求:typedef struct Node{

2014-07-28 16:37:27 1031

原创 链表队列的实现

队列也是数据结构中比较重要的一种,和栈相反的是,队列是先进先出的,先进队列的可以先出队,跟平时我们排队是一样的。在允许多通道程序运行的计算机系统中,同时几个作业运行。凡是申请输出的作业都从队尾进入队列。现在用链表实现队列,先定义一个链表结点:typedef struct QNode{ int data; QNode *next;}QNode,*QueuePtr;给队列定义一个头结点

2014-07-26 22:01:40 390

原创 双向链表的实现

上一篇博文介绍了如何使用C语言实现单链表,这篇博文介绍下双向链表的实现。单链表中每个结点只有一个后驱,而双向链表中每个结点都有一个后驱和前驱(除了第一个结点只有一个后驱,最后一个结点只有一个前驱)。双向链表中每个结点具有一个数据域和两个指向前一个结点和后一个结点的指针域。代码的实现:首先得创建一个结点的结构体:Double_Nodetypedef struct Double_Node{

2014-07-26 16:18:03 388

原创 单链表

线性表是数据结构中比较重要的一种结构。线性表可以用连续存储空间来表示,也可以用链表的形式表示。链式存储结构不要求在逻辑上相邻的元素在物理位置上也相邻,因此他在插入元素和删除元素上具有着得天独厚的优势,但是却失去了顺序存储中可随机存储的优点。线性链表中每个元素被存放在一个叫做结点的地方,结点包含一个数据域和一个指针域,数据域存放元素,指针域存放着指向下一个结点的指针。若链表的结点中只包含一个指针

2014-07-24 21:17:24 433

原创 链表排序

链表是一种在物理存储上非连续,非顺序的存储结构,数据的逻辑关系是通过指针链接次序实现的,链表通过一系列结点组成,结点可以在运行时动态生成。每个结点由两部分组成:数据域和存储下一结点的指针域。链表是一种常见的数据结构。要想进行链表排序,首先得建立一个单链表,程序代码是由一个数组转化而来,代码如下:先建立一个结点的结构体:struct node{ int val; node *nex

2014-07-21 23:54:53 611

原创 希尔排序算法——缩小增量法排序

希尔排序——1959年shell提出而得名,也称为缩小增量排序算法,它是直接插入排序的改进,效率比较高,适合于中小规模的排序。具体的算法实现步骤为:首先得知道直接插入排序的算法,然后就是选择增量给原数列进行分组,对每个分得的小组进行直接插入排序便可,然后逐渐减小这个增量,依然进行新的分组的直接插入排序,直到增量为1,此时数列便是有序数列了。具体的代码如下:首先是对特定的增量的分组的直接插入

2014-07-21 16:15:49 485

原创 直接插入排序

直接插入排序是一种比较简单的排序方法,他的原理类似于我们玩牌的时候抓牌,手中的牌是按照一定的顺序排列的,然后摸到的牌先进行查找顺序,将牌插到应该插入的地方,直到最后一张牌的插入,那么手中的牌都是有序的。数列的直接插入排序也是这样的,将第一个数看做是排列有序的数列,然后将后面的数依次插入到数列中:代码如下void _insert_sort(int *A,int size){ int

2014-07-19 00:23:09 629 1

原创 堆排序

先看下堆的概念:堆是一种数据结构,逻辑上是一种完全的二叉树,在存储上是数组对象。堆分为小顶堆和大顶堆,顾名思义:小顶堆是指顶部的元素是最小的,大顶堆是指顶部的元素师最大的。这样只要我们能够得到这样的堆,每次将顶部的元素和数列的最后一个元素进行交换,然后再对剩下的元素进行建堆,接着以此类推这样的做法,便可以得到排好的数列了。根据上面所述,堆排序的关键是:建堆。建堆也分为调堆和建堆过程;

2014-07-18 21:50:45 384

原创 分治——合并排序

分治策略中有一个经典的算法就是合并排序,这个算法的精髓也是分治二字,分而治之。将一个大规模的问题分割成若干个同样的小问题,小问题的规模很小,很容易解决,解决了小的问题后再对这些小问题的结果进行合并得到大规模问题的解答。合并排序便是分治策略中比较经典的算法,首先是合并,两个排列有序的数列经过合并后成为有序的数组:代码如下:void _merge(int *A,int left,int mid

2014-07-18 14:52:08 643

原创 快速排序算法

快速排序算法是冒泡排序算法的升级版,他的效率是极高的,基本思想使用了分治策略,通过一趟排序将数组分成两个小数组,其中一部分比另一部分的数据小,然后递归的对子序列进行排序,直到完成整个数据的排列。基本步骤是:将数组中的一个作为轴(一般选择第一个)然后从数组的最后一个开始和这个轴进行比较,如果比轴大,就放在原处不动,进行下个数据的比较,直到找到一个比轴小的数,然后进行替换;接下来从第一个数开始

2014-07-17 21:39:09 432

IT公司面试题总结

这里面包含了100道经典的c++面试笔试题目,掌握这100道等于你一只脚已经跨进了大公司的大门。

2014-10-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除