摘要: 在计算机科学中,折半搜索(英语:half-interval search),也称二分搜索(英语:binary search)、对数搜索(英语:logarithmic search),是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程 阅读全文
posted @ 2022-06-25 18:05 this毛豆 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 顺序查找是按照序列原有顺序对数组进行遍历比较查询的基本查找算法。对于任意一个序列以及一个给定的元素,将给定元素与序列中元素依次比较,直到找出与给定关键字相同的元素,或者将序列中的元素与其都比较完为止。 1 /** 2 * C data structure sequence search exampl 阅读全文
posted @ 2022-06-25 18:00 this毛豆 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 希尔排序(Shell's Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因 D.L.Shell 于 1959 年提出而得名。希尔排序是把记录按下标的一定增量分组,对每组 阅读全文
posted @ 2022-06-25 17:56 this毛豆 阅读(27) 评论(0) 推荐(0) 编辑
摘要: 折半插入排序(binary insertion sort)是对插入排序算法的一种改进,由于排序算法过程中,就是不断的依次将元素插入前面已排好序的序列中。由于前半部分为已排好序的数列,这样我们不用按顺序依次寻找插入点,可以采用折半查找的方法来加快寻找插入点的速度。 1 /** 2 * C data s 阅读全文
posted @ 2022-06-25 17:53 this毛豆 阅读(86) 评论(0) 推荐(0) 编辑
摘要: 快速排序(Quicksort),是对冒泡排序算法的一种改进。算法通过多次比较和交换来实现排序,其排序流程如下: (1)首先设定一个分界值,通过该分界值将数组分成左右两部分。(2)将大于或等于分界值的数据集中到数组右边,小于分界值的数据集中到数组的左边。此时,左边部分中各元素都小于分界值,而右边部分中 阅读全文
posted @ 2022-06-25 17:45 this毛豆 阅读(62) 评论(0) 推荐(0) 编辑
摘要: 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个算法的名字由来是因为越小 阅读全文
posted @ 2022-06-25 17:35 this毛豆 阅读(20) 评论(0) 推荐(0) 编辑
摘要: 顺序排序思想:从左到右依次排序数组,依次拿当前元素和其后的所有元素作比较,根据设定做升序或降序排序。 1 /** 2 * C data structure sequence sort example. 3 * 4 * License - MIT. 5 */ 6 7 #include <stdio.h 阅读全文
posted @ 2022-06-25 17:29 this毛豆 阅读(71) 评论(0) 推荐(0) 编辑
摘要: 二叉树(Binary tree)是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。二叉树特点是每个节点最多只能有两棵子树,且有左右之分。 binary-tree.c 1 /* 阅读全文
posted @ 2022-06-25 16:05 this毛豆 阅读(35) 评论(0) 推荐(0) 编辑
摘要: 链式队列,使用链表实现的队列存储结构,链式队列的实现思想同顺序队列类似,只需创建两个指针(命名为 top 和 rear)分别指向链表中队列的队头元素和队尾元素。 linked-queue.c 1 /** 2 * C data structure linked queue example. 3 * 4 阅读全文
posted @ 2022-06-25 15:55 this毛豆 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 顺序队列是队列的顺序存储结构,顺序队列实际上是运算受限的顺序表。和顺序表一样,顺序队列用一个向量空间来存放当前队列中的元素。由于队列的队头和队尾的位置是变化的,设置两个指针front和rear分别指示队头元素和队尾元素在向量空间中的位置,它们的初值在队列初始化时均应设置为0。 sequence-qu 阅读全文
posted @ 2022-06-25 15:45 this毛豆 阅读(47) 评论(0) 推荐(0) 编辑
摘要: 链式栈是一种数据存储结构,可以通过单链表的方式来实现,使用链式栈的优点在于它能够克服用数组实现的顺序栈空间利用率不高的特点,但是需要为每个栈元素分配额外的指针空间用来存放指针域。 linked-stack.c 1 /** 2 * C data structure linked stack examp 阅读全文
posted @ 2022-06-25 15:24 this毛豆 阅读(29) 评论(0) 推荐(0) 编辑
摘要: 顺序栈是栈的顺序实现。顺序栈是指利用顺序存储结构实现的栈。采用地址连续的存储空间(数组)依次存储栈中数据元素,由于入栈和出栈运算都是在栈顶进行,而栈底位置是固定不变的,可以将栈底位置设置在数组空间的起始处;栈顶位置是随入栈和出栈操作而变化的,故需用一个整型变量top来记录当前栈顶元素在数组中的位置。 阅读全文
posted @ 2022-06-25 15:17 this毛豆 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 这里的内核链表指Linux中实现的一种特殊的双向链表,区别于传统的双向链表包含数据,内核链表结构本身不包含数据,类比于卡车和货物,内核链表是卡车,数据是货物,两者之间联系通过container_of()函数进行映射,内核链表作为一个独立的成员包含在包含数据的结构体中,对数据的操作都是操作结构体中的内 阅读全文
posted @ 2022-06-25 15:02 this毛豆 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。 代码如下: double-list.c 1 /** 2 * C data structure d 阅读全文
posted @ 2022-06-25 14:25 this毛豆 阅读(30) 评论(0) 推荐(0) 编辑