快速排序代码实现

快速排序代码实现快速排序代码:#include <stdio.h>void QuickSort(int * a, int low, int high); int FindPos(int * a, int low, int high);int main(void) { int a...

2015-08-23 20:17:44

阅读数:414

评论数:0

二叉树遍历的的例子

二叉树遍历代码二叉树三种遍历小例子:#include <stdio.h> #include <malloc.h>struct BTNode * CreateBTree(void); void PreTraverseBTree(struct BTNode * pT); voi...

2015-08-23 11:39:21

阅读数:1311

评论数:0

已知中序遍历序列和后序遍历序列,求先序遍历

通过中序遍历和后序遍历求先序 中序:BDCEAFHG 后序:DECBHGFA 求先序遍历结果: 先求原始二叉树 后序遍历中最后出现的是根,所以A是整棵树的根,在结合中序遍历来看 BDCE是A的左子树,而FHG是A的右子树,所以我们就有了下面的图: 而BDCE序列中谁是整个序列根,还得看后...

2015-07-26 10:22:41

阅读数:2747

评论数:1

已知两种遍历序列求原始二叉树

已知两种遍历序列求原始二叉树需要明确的前提条件 通过先序和中序可以求出原始二叉树 通过中序和后序可以求出原始二叉树 但是通过先序和后序无法还原出二叉树 换种说法: 只有通过先序中序或者后序中序才可以确定一个二叉树 先来看一个例子,已知先序遍历序列和中序遍历序列求后序遍历: 先序:ABCDEFGH...

2015-07-25 09:18:38

阅读数:6906

评论数:0

有序线性表逆序代码

#include #define MaxLen 50 typedef int elemtype; typedef elemtype sqlist[MaxLen]; int create (sqlist A) {     int i,n;     printf("创建一个顺序表\n&q...

2015-04-22 17:09:44

阅读数:1557

评论数:0

二分查找

二分查找有个前提,是待查找的序列或数组必须是一个有序的的序列或数组,否则二分查找算法就毫无意义,或者说根本就没法查了。 (如果别人给你一个无序的数组,就让你用二分查找算法实现一下查找,千万别上来抄起笔傻兮兮的写代码,这是一面试过程的陷进, 你的先用你学过的排序算法,对别人给你的无序数组从小到大...

2015-04-11 20:43:04

阅读数:440

评论数:0

快速排序代码实现

快速排序代码实现: #include void PrintArray(int a[], int arr_len) {     int i;     for(i=1;i     {         printf("%d ",a[i]);     }    ...

2015-04-09 08:37:22

阅读数:354

评论数:0

快速排序一轮的代码实现

#include #include void PrintArray(int a[], int arr_len) {     int i;     for(i=1;i     {         printf("%d ",a[i]);     }     printf(&qu...

2015-04-08 23:22:36

阅读数:385

评论数:0

冒泡排序

#include void PrintArray(int a[], int arr_len) {     int i;     for(i=0;i     {         printf("%d ",a[i]);     } } void BubbleSort(int ...

2015-04-05 23:24:27

阅读数:384

评论数:0

希尔排序

希尔排序是在插入排序的基础上进行的。 主要思想是将排序的元素按照一定步长进行分组,对每组中的元素按步长进行插入排序,进行完第一次各组排序后的结果再比上次小的步长,再分组,再各组逐次排序,再得到排序结果..., 直到这个步长变为1的时候,其实就是真正的插入排序。这次完全按照插入排序算法对所有元素排序...

2015-04-04 19:37:12

阅读数:403

评论数:0

堆排序算法代码实现

对排序算法的核心思想是: 把一个数组按照完全二叉树创建好最大堆以后,拿堆顶元素和最后一个元素(堆完全二叉树顺序存储(是个数组)\的最后一个元素)交换以后, 对于这个新的数组,除去最后面那个最大的元素(原先的堆顶元素)的序列再次调整成最大堆。如此反复交换最大堆堆顶元素,调整剩余子序列到最大堆。 直到...

2015-04-02 23:04:59

阅读数:1174

评论数:0

堆排序创建初始堆

最终结果如图1-1(e):

2015-04-01 07:49:17

阅读数:21263

评论数:0

二叉树

二叉树的定义: 二叉树是n(n>=0)个有限结点构成的集合。n=0的树称为空二叉树;n>0的二叉树由一个根结点和两个互不相交的、分别被称为左子树和右子树的二叉树构成。

2015-03-28 14:08:24

阅读数:395

评论数:0

选择排序

选择排序的思想是假设第一个元素64是一开始的最小元素,找出剩余的5~24的最小的元素(5),如果该元素(5)比64还小,就交换64和该元素(5)就得到了第一次排序结果 紧接着再看64~24的元素,假设64是最小的,找出7~24中最小的元素(6),如果该元素(6)比64还小,就交换该元素(6)和64...

2015-03-27 22:41:04

阅读数:701

评论数:0

排序算法直接插入排序

直接插入排序算法类似玩扑克时的按从小到大整理扑克一样,如图: 我们手中依次从左到右拿着64, 5, 7, 89, 6,24, 初始将[64]看作已经排好序位于第一个位置的卡片,用紧挨着的5与他比较, 5比64小,挪到64左侧,得到第一次排序结果[5   64]    7  89   6   24 ...

2015-03-24 21:18:32

阅读数:601

评论数:0

普通树转换成二叉树

普通树转换为二叉树的方法是: ①树中所有相同双亲结点的兄弟节点之间加一条连线 ②对树中不是双亲结点第一个孩子的结点,只保留新添加的该结点与左兄弟结点之间的连线,删去该结点与双亲结点之间的连线 ③整理所有保留和添加的的连线,使每个结点的第一个孩子结点连线位于左孩子指针位置,使每个结点的右兄弟结...

2015-03-22 20:15:14

阅读数:15076

评论数:2

二叉树后序遍历

后序遍历(LRD): ①访问后序遍历中根节点的左子树 ②访问后序遍历中根结点的右子树 ③访问根结点 假设只有A,B,C(对于上图)三个结点,则后序遍历的结果: B C A 开始第一次递归推演(对于B结点): DB C A 第二次递归推演(对于D结点): D B C A GD B C A 第三次...

2015-03-22 15:11:40

阅读数:569

评论数:0

二叉树中序遍历

访问根结点的的左子树,访问根结点和访问根结点的右子树依次记作(L, D ,R) 中序遍历(LDR)算法: ①遍历根结点的左子树, ②访问根结点 ③遍历根结点的右子树 对于上面的图,我们假定只有A, B, C三个结点,则中序遍历结果为: B           A         C 采用上节(二叉...

2015-03-22 14:49:56

阅读数:434

评论数:0

二叉树链式存储及前序遍历

代码实现二叉树配图: #include #include typedef char DataType; typedef struct Node {     DataType data;     struct Node *leftChild;     struct Node *rightCh...

2015-03-22 12:28:07

阅读数:935

评论数:0

递归算法

还记得当时老师说递归算法的关键是: ①归纳出一个正确的数学公式 ②要有一个出口 比如这个求阶乘的递推的例子数学公式 n!=n*(n-1)!//有点像高中数学中构造数列公式一样,把n!和(n-1)!看成一个抽象的函数则有 f(n) = n*f(n-1) 而这个出口就是n为0的时候阶乘的值...

2015-03-20 22:44:50

阅读数:265

评论数:0

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