摘要: C语言中有三种类型的循环:for,while,do-while。 while循环先判断循环条件。 while (condition) { //gets executed after condition is checked } do-while循环先执行循环体重的语句,再判断循环条件。 do { //gets executed at least once } while (con... 阅读全文
posted @ 2015-08-11 13:48 programnote 阅读(753) 评论(0) 推荐(0) 编辑
摘要: 什么是搜索? 在计算机科学中,搜索就是在一个事物的集合中找到具有特定特征的一项的过程。这些集合中的元素可能是排好序的数据库中的记录,简单数组中的数据,文件中的文本,树中的节点,几何图形中的点和边或者是其他搜索空间的元素。 搜索有什么作用? 搜索是计算机科学的核心算法之一。我们都知道现代的计算机存储了很多数据和信息,为了快速的获取我们所要的信息我们就需要高效的搜索算法。有一些数据组织方法可以加快搜索... 阅读全文
posted @ 2015-08-10 21:44 programnote 阅读(354) 评论(0) 推荐(0) 编辑
摘要: 当我们在字典中查找某个单的时候,一般我们会翻到一个大致的位置(假设吧,翻到中间位置),开始查找。如果翻到的正好有我们要的词,那运气好,查找结束。如果我们要找的词还在这个位置的前面,那我们对前面的这一半词典继续搜索,翻到某个位置(假设是四分之一的位置)等等。这个二分搜索的工作原理一样。相应的算法就叫做二进制搜索算法。 迭代版本算法: //iterative binary search which r... 阅读全文
posted @ 2015-08-10 20:53 programnote 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 如果数组元素已经排过序(升序),那我们搜索某个元素就不必遍历整个数组了。在下面给出的算法代码中,到任何一点,假设当前的arr[i]值大于搜索的值data,就可以停止搜索了。 #include // a function to search "data" in an array "arr" of size "size" // returns 1 if the element is present... 阅读全文
posted @ 2015-08-10 20:30 programnote 阅读(384) 评论(0) 推荐(0) 编辑
摘要: 假定有一个元素顺序情况不明的数组。这种情况如果我们要搜索一个元素就要遍历整个数组,才能知道这个元素是否在数组中。 这种方法要检查整个数组,核对每个元素。下面是算法实现: #include // a function to search "data" in an array "arr" of size "size" // returns 1 if the element is present e... 阅读全文
posted @ 2015-08-10 20:14 programnote 阅读(557) 评论(0) 推荐(0) 编辑
摘要: C语言中,声明数组的语句: int arr[100]; 这样声明得到的数组里面的存储的是随机的我们不知道的数据,对用户来说就是垃圾。有许多情况我们要将数组初始化为全零的情况才能进行其他操作。 最简单的方法就是用一个循环吧数组所有元素设置为0: int arr[100]; int i = 0; for(i = 0 ; i < 100 ; i++) arr[i] = 0; //This wi... 阅读全文
posted @ 2015-08-10 19:54 programnote 阅读(70723) 评论(1) 推荐(3) 编辑
摘要: 有时候我们需要在某个元素集合中找到最小值和最大值 。优先级队列抽象数据(Priority Queue ADT)模型是我们能够使用的方法之一,这是一种支持插入和删除最小值(DeleteMin)或者最大值(DeleteMax)的数据结构。 这两个操作和队列中的进队(EnQueue)和出队(DeQueue)操作很相似。区别就在于,在优先级队列中,数据进入的顺序与他们接受处理的顺序可能不同。就像工作日... 阅读全文
posted @ 2015-08-10 17:43 programnote 阅读(2664) 评论(0) 推荐(0) 编辑
摘要: 我们有时看到这样地饿代码: int *ptr = &amp;x; 这里,ptr是一个指向x在内存中的地址的指针。 假设有另外一条语句是这样地的: int **ptr2 = &amp;ptr; 我们定义了一个指向指针的指针。 假设我们的计算机是8bit的,地址也是8bit(因此只有256字节的内存)。下图代表内存的一部分(上面的一排数字代表地址)。 45 55 56 57 ... 阅读全文
posted @ 2015-08-10 16:07 programnote 阅读(564) 评论(0) 推荐(0) 编辑
摘要: 类似于链表和堆栈,队列也是存储数据的结构。队列中数据进入队列的顺序很重要,一般来说,队列就是一群人或者事物按照排好的顺序等待接受服务或者处理。 定义:队列,又称为伫列(queue),是先进先出(FIFO, First-In-First-Out)的线性表。在具体应用中通常用链表或者数组来实现。队列只允许在后端(称为rear)进行插入操作,在前端(称为front)进行删除操作。 和堆栈一样的,也有两种... 阅读全文
posted @ 2015-08-10 10:24 programnote 阅读(2997) 评论(0) 推荐(0) 编辑
摘要: 这是C语言中指针的基本用法之一,我们先来看一个小例子。下面是代码: int main(void) { char *p = "Hello"; while(*p++) printf("%c", *p); return 0; } 这段代码中第一句表达式: char *p = "Hello"; 声明了指向char类型的指针p,当我们说“指向char类型的指针”时... 阅读全文
posted @ 2015-08-09 19:58 programnote 阅读(1065) 评论(0) 推荐(0) 编辑