合并排序是一种基于分而治之技术的排序技术。 在最坏情况下的时间复杂度为Ο(n log n)时,它是最受尊敬的算法之一。 用C实现 (Implementation in C) 我们将在这里看到C编程语言中合并排序的实现 - #include <stdio.h> #define max 10 int a[11] = { 10, 14, 19, 26, 27, 31, 33, 35, 42, 44, 0
选择排序是一种简单的排序算法。 这种排序算法是一种就地比较算法,其中列表分为两部分,左端的排序部分和右端的未排序部分。 最初,排序部分为空,未排序部分为整个列表。 用C实现 (Implementation in C) #include <stdio.h> #include <stdbool.h> #define MAX 7 int intArray[MAX] = {4,6,3,2,1,9,7};
这是一种基于比较的就地排序算法。 这里,维护一个始终排序的子列表。 例如,维护数组的下半部分以进行排序。 要在此已排序的子列表中“插入”的元素必须找到其适当的位置,然后将其插入其中。 因此名称插入排序。 用C实现 (Implementation in C) #include <stdio.h> #include <stdbool.h> #define MAX 7 int intArray[MAX]
我们将在这里看到C编程语言中bubble sort的实现。 用C实现 (Implementation in C) #include <stdio.h> #include <stdbool.h> #define MAX 10 int list[MAX] = {1,8,4,6,0,3,5,2,7,9}; void display() { int i; printf("["); //
哈希表是以关联方式存储数据的数据结构。 在哈希表中,数据以数组格式存储,其中每个数据值都有自己唯一的索引值。 如果我们知道所需数据的索引,则访问数据变得非常快。 用C实现 (Implementation in C) #include <stdio.h> #include <string.h> #include <stdlib.h> #include <stdbool.h> #define SIZE
插值搜索是二进制搜索的改进变体。 该搜索算法适用于所需值的探测位置。 为使此算法正常工作,数据收集应采用有序和均匀分布的形式。 它的运行时复杂性是log 2 (log 2 n) 。 用C实现 (Implementation in C) #include<stdio.h> #define MAX 10 // array of items on which linear search will be
二进制搜索是一种快速搜索算法,运行时复杂度为Ο(log n)。 这种搜索算法的工作原则是分而治之。 为使此算法正常工作,数据收集应采用排序形式。 用C实现 (Implementation in C) #include <stdio.h> #define MAX 20 // array of items on which linear search will be conducted. int i
这里我们介绍C语言中线性搜索的实现。 程序的输出在代码之后给出。 线性搜索程序 #include <stdio.h> #define MAX 20 // array of items on which linear search will be conducted. int intArray[MAX] = {1,2,3,4,6,7,9,11,12,14,15,16,17,19,33,34,43,4
我们将在这里看到C编程语言中的堆栈实现。 您可以通过单击Try-it按钮来尝试该程序。 要了解堆栈的理论方面,请单击访问上一页。 用C实现 (Implementation in C) #include <stdio.h> #include <string.h> #include <stdlib.h> #include <stdbool.h> #define MAX 6 int intArray[M
Infix符号对于人类来说更容易阅读和理解,而对于像计算机这样的电子机器,postfix是解析的最佳表达形式。 我们将在这里看到一个程序,用于将中infix符号转换和评估为postfix表示法 - 例子 (Example) #include<stdio.h> #include<string.h> //char stack char stack[25]; int top = -1; void
我们将在这里看到C编程语言中的堆栈实现。 您可以通过单击Try-it按钮来尝试该程序。 要了解堆栈的理论方面,请单击访问上一页。 用C实现 (Implementation in C) #include <stdio.h> int MAXSIZE = 8; int stack[8]; int top = -1; int isempty() { i
圆形链接列表是链接列表的变体,其中第一个元素指向最后一个元素,最后一个元素指向第一个元素。 单链表和双链表都可以制成循环链表。 用C实现 (Implementation in C) #include <stdio.h> #include <string.h> #include <stdlib.h> #include <stdbool.h> struct node { int data;
双向链接列表是链接列表的变体,与单链接列表相比,可以以两种方式轻松地向前和向后导航。 用C实现 (Implementation in C) #include <stdio.h> #include <string.h> #include <stdlib.h> #include <stdbool.h> struct node { int data; int key; struct n
链表是一系列数据结构,通过链接连接在一起。 链接列表是包含项目的一系列链接。 每个链接都包含与另一个链接的连接。 链表是数组后第二常用的数据结构。 用C实现 (Implementation in C) #include <stdio.h> #include <string.h> #include <stdlib.h> #include <stdbool.h> struct node { in
在上一节中,我们已经了解了插入操作的工作原理。 并不总是需要在数组的末尾插入元素。 以下可能是阵列插入的情况 - 在数组的开头插入 在数组的给定索引处插入 在给定的数组索引之后插入 在给定的数组索引之前插入 在数组的开头插入 当插入发生在开头时,它会导致所有现有数据项向下移动一步。 在这里,我们设计并实现了一种在数组开头插入元素的算法。 算法 (Algorithm) 我们假设A是一个包含N元素的数