数据结构
wjimin2008
这个作者很懒,什么都没留下…
展开
-
二叉树的遍历(前序、中序、后序、层序),递归和非递归实现
其实自己没有写博客的习惯,就是个小菜鸟。因为接下来要找工作的原因,将之前学习过数据结构或者算法温习一下,记录下来,日后回头看看自己当初的稚嫩和不成熟。 树是常用的数据结构,二叉树是最简单的一种树,没有其他树(排序树、红黑树等)的约束,树的遍历也是各大公司笔试时的常见考点。 二叉树的结构定义如下: struct BinaryTreeNode { int m_nValue;原创 2014-03-14 15:07:20 · 953 阅读 · 0 评论 -
冒泡排序及其优化
排序是算法的基础,同时排序算法中也蕴含着丰富的算法思想。未来几天我就梳理一下几种常用的排序,今天首先我就总结一下是冒泡排序。 数组大小为n 1) 比较两个相邻元素,如果前一个元素大于后一个元素,则交换。 2) 这样对数组第0个元素到第n-1个元素遍历一趟,最大的元素一定“沉到”最后面。 3) n=n-1.重复步骤2 很简单,直接附上代码 void BubbleSort1(int* ar原创 2014-03-29 14:57:00 · 528 阅读 · 0 评论 -
插入排序及其优化
插入排序,假定之前的元素已经是有序的,新插入的一个元素,从后面开始比较,比这个新插入的数大的往后移。 void InsertSort1(int* array,int n) { if(array==NULL||n<1) return; for(inti=1;i<n;i++) { intke原创 2014-03-30 19:30:13 · 471 阅读 · 0 评论 -
希尔排序及其优化
希尔排序的本质就是分组插入排序,希尔排序也叫缩小增量排序。 该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的 元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。因为直接插入排序在元素基本有序的情况下(接近最好情况),效率是很高的,因此希尔排序在时间效率上比前两种方法有较大提高转载 2014-03-31 23:05:52 · 784 阅读 · 0 评论 -
归并排序
归并排序的基本思路就是将数组分成二组A,B,如果这二组组内的数据都是有序的,那么就可以很方便的将这二组数据进行排序。如何让这二组组内数据有序了? 可以将A,B组各自再分成二组。依次类推,当分出来的小组只有一个数据时,可以认为这个小组组内已经达到了有序,然后再合并相邻的二个小组就可以了. 这样通过先递归的分解数列,再合并数列就完成了归并排序。 void MergeArray(int* arra转载 2014-04-01 11:44:18 · 464 阅读 · 0 评论