c语言
bidianzhang
这个作者很懒,什么都没留下…
展开
-
C语言:五大基本排序算法
今天看到了一个算法,感觉以前学过的呢些算法都忘得差不多了,下午复习复习,忘记的上网搜搜,下面的全部编译通过,又学习了点东西。 一.选择排序算法:算法基本原理:一次选定数组中的每一个数,记下当前位置并假设它是从当前位置开始后面数中的最小数min=i,从这个数的下一个数开始扫描直到最后一个数,并记录下最小数的位置min,扫描结束后如果min不等于i,说明假设错误,否则交换m转载 2012-10-08 15:58:48 · 1036 阅读 · 0 评论 -
二叉树的存储结构
二叉树是非线性结构,即每个数据结点至多只有一个前驱,但可以有多个后继。它可采用顺序存储结构和链式存储结构。1.顺序存储结构 二叉树的顺序存储,就是用一组连续的存储单元存放二叉树中的结点。因此,必须把二叉树的所有结点安排成为一个恰当的序列,结点在这个序列中的相互位置能反映出结点之间的逻辑关系,用编号的方法从树根起,自上层至下层,每层自左至右地给所有结点编号,缺点是有可能对存储空转载 2014-03-24 14:55:26 · 845 阅读 · 0 评论 -
广义表的长度和深度
广义表LS=(f,(),(e),(a,(b,c,d)))的长度是多少,深度是多少例如上表、长度为4、深度为3、为什么呢长度的求法为最大括号中的逗号数加一、LS最大括号内有1. f 元素后边有个逗号、2.()元素后有个逗号、3.(e)元素后有个逗号4. (a,(b,c,d))后边没有逗号 ----把这个看成是一个元素也就是三个逗号 同样被分成四组、长度就为四了原创 2014-03-24 14:40:41 · 59098 阅读 · 10 评论 -
求最小生成树,普里姆(Prim)算法
1、 相关概念1)生成树 一个连通图的生成树是它的极小连通子图,在n个顶点的情形下,有n-1条边。生成树是对连通图而言的,是连同图的极小连通子图,包含图中的所有顶点,有且仅有n-1条边。非连通图的生成树则组成一个生成森林;若图中有n个顶点,m个连通分量,则生成森林中有n-m条边。2)和树的遍历相似,若从图中某顶点出发访遍图中每个顶点,且每个顶点仅访问一次,此过程称为图的遍历,转载 2014-03-24 13:38:10 · 2188 阅读 · 0 评论 -
给编程开发者建议的书籍
1、深入浅出iphone开发2、C Primer Plus(第五版)中文版原创 2013-01-31 10:21:11 · 440 阅读 · 0 评论 -
常用排序,查找,树算法集锦
前面写了好些排序,红黑树,B 树算法的文章,还剩下查找这一大块没有写,查找相关的算法代码已经实现,但是却没有写查找算法日志的闲情了,只好先在这里放出代码来,以后有空有闲情再补上吧。算法代码 Google 仓库:点击这里已完成算法排序插入排序希尔排序冒泡排序快速排序选择排序堆排序归并排序计数排序桶/箱排序基数排序查找顺序查找二分查找块排序哈希查找二转载 2012-10-17 11:16:09 · 1208 阅读 · 0 评论 -
C语言冒泡排序法的简单程序
main() { int i,j,temp; int a[10]; for(i=0;iscanf ("%d,",&a[i]); for(j=0;j{ for (i=0;iif (a[i]>a[i+1]) { temp=a[i]; a[i]=a[i+1]; a[i+1]=temp;} } for(i=1;iprintf("%5d,",a[i]原创 2012-10-17 10:55:56 · 3266 阅读 · 0 评论 -
exit(0),abort()的区别
abort()是异常终止一个进程的。在该函数后一般还要加return函数。exit()和return()有些类似,但是不管函数是否为void类型,均可用exit(0)。一般在()中的数为0时,表示进程正常,非零值时需要程序员对应不同的值进行处理。转载 2012-10-17 10:07:41 · 1063 阅读 · 0 评论 -
c面试题
4. static有什么用途?(请至少说明两种)1.限制变量的作用域2.设置变量的存储域7. 引用与指针有什么区别?1) 引用必须被初始化,指针不必。2) 引用初始化以后不能被改变,指针可以改变所指的对象。2) 不存在指向空值的引用,但是存在指向空值的指针。8. 描述实时系统的基本特性在特定时间内完成特定的任务,实时性与可靠性9. 全局变量和局部变量在内存中转载 2012-10-15 11:26:38 · 1538 阅读 · 0 评论 -
i++ 与 ++i 的效率哪个更高
++i 比 i++ 的效率更加高一些,++i 不用生成临时变量而 i++要生成临时变量。原创 2012-10-15 10:45:48 · 847 阅读 · 0 评论 -
深入剖析C/C++函数的参数传递机制
先看一下简单的例子。void Func1(int x) //这个函数的参数使用值传递方式{ x = x + 10;}//当参数类型更复杂时,指针和引用传递方式在效率等方面的优势更为明显//不过那样例子就不够“简单”了void Func2(int *x) //这个函数的参数使用指针传递方式{ *x = *x + 10;}void Func3(int转载 2012-10-15 10:32:26 · 689 阅读 · 0 评论 -
C和C++如何动态分配和释放内存,他们的区别是什么
C使用 malloc 申请,free 释放。C++使用new申请,delete释放。因为C++是面向对象的语言,new操作符不但会分配内存空间,还会调用对应类型的构造函数。同样的,delete的时候会调用构造函数。原创 2012-10-15 10:10:13 · 903 阅读 · 0 评论 -
寻找重复的数
问题:有101个数,为[1,100]之间的数,其中一个数是重复的,如何寻找这个重复的数,其时间复杂度和空间复杂度是多少?解:假设这101个数存放在Data[101]的数组中int Data[101];for (int i = 0 ; i{Data[i] = i;}Data[100] = 6;//假设是这些数据,并将最后一个设计为重复的数,当然也可以是其它数据,此处便转载 2012-10-10 08:51:20 · 543 阅读 · 0 评论 -
静态查找表与动态查找表
一、静态查找表1.顺序表查找顺序查找(Sequential Search)又称为线性查找,是一种最简单的查找方法。查找过程如下:从线性表的一端开始顺序扫描线性表,依次将扫描到的结点关键字和给定值进行比较。若当前扫描到的结点关键字与给定值相等,则查找成功;若扫描结束后,仍未能找到关键字等于给定值的结点,则查找失败。2.有序表查找(折半查找)转载 2014-03-24 15:06:53 · 16474 阅读 · 0 评论