
数据结构
文章平均质量分 52
Mierya0707
失眠症患者
展开
-
数据结构——链表
1、什么是链表?链表就是结构体变量与结构体变量连接在一起形成的一串表如下图创建一个静态链表:代码如下:#include <stdio.h>struct Node{ int data; //数据域 struct Node* next; //指针域};int main(){ /*静态链表*/ struct Node Node1={1,NULL}; //创建的结构体变量 struct Node原创 2021-08-10 16:42:56 · 422 阅读 · 0 评论 -
二分查找法
如果我们在一堆数组中需要查找某一个元素,一般情况下我们需要在所有元素中一个一个对比,当我们将数组排序好之后,就不需要这么直接笨拙的办法了,由此我们可以用二分查找法(也叫折半查找)进行查找我们需要的元素二分查找法的使用前提是:数组已经排序好了。假设我们这里使用的是升序排序,那么二分查找法的基本原理就是:将数组中第一个元素设置为low,最后一个元素设置为high,中间元素设置为mid;设置我们要查找的数组为关键字key;将关键字key与中间元素mid进行比较,如果key<mid:如果key=原创 2021-07-27 21:58:23 · 238 阅读 · 0 评论 -
数据结构基础学习——快速排序
快速排序(quick sort)是从待排序序列中选取一个关键字key,一般取第一个元素,通过一轮排序将待排序列分割为两部分:从后往前遍历:即从后往前把每个数字和关键字进行比较,如果数组中数据小于key,就将数组依次放到关键字左边,然后接着从前往后遍历,如果数组中的数据大于了key,那么就将从后往前的第一个比较过数据位置替换。直到左右两边的位置重合,说明key就找到了正确的位置,每次循环就能找到一个数的正确位置然后将key左右两边的数据分为两组,递归调用自己。如果你想更直观的去理解快速排序的思想原创 2021-07-27 21:13:34 · 692 阅读 · 0 评论 -
算法中的时间复杂度和空间复杂度
利用算法编写程序已经称为完成计算机某项工作的重要指标,它可以对计算机程序的每个对象和处理规则给出正确详尽的描述,算法可以理解为基本元素按及规定的运算顺序构成的完整解题步骤,算法特征:有穷性:一个算法必须保证执行有限步之后结束;确切性:算法的每个步骤必须进行明确的定义;输入:一个算法应该有0个或多个输入,0个输入就是算法本身定义了初始条件;输出:一个算法应该有一个或多个输出,以反应输入数据加工后的结果,没有输出的算法毫无意义;可行性:算法原则上可以精确运行且手写有限次之后即可完成。复杂度可以原创 2021-07-22 11:03:30 · 252 阅读 · 0 评论 -
数据结构基础学习——直接插入排序
插入排序的概念:在待排关键字中,每次按顺序取出一个元素m暂存,然后从取出的待排关键字m之前的关键字n开始扫描,如果关键字n大于待排关键字m,则将关键字n后移一位;,然后再从待排关键字m之前取关键字进行比较,循环进行上述操作,直到所有关键字有序为止。需要注意的是:插入排序的思想是数组有序,然后将无序的部分循环插入到已有序的序列中;话不多说,上代码!#include <stdio.h>void Insert(int k[],int n) //默认需要排序的关键字为整型{ i原创 2021-07-21 21:54:53 · 258 阅读 · 0 评论 -
数据结构基础学习——冒泡排序
简而言之,冒泡排序(bubbleSort)就是对两个相邻的关键字进行顺序比对,如果顺序则不变,如果反序则交换,直到没有反序的关键字记录为止。原创 2021-07-21 19:04:51 · 379 阅读 · 0 评论 -
数据结构——排序算法
数据结构这门只是本身比较枯燥,以下是用通俗易懂的语言去学习和理解排序。1、概念类似于成绩排名一样按照关键字之间的大小关系排序,对同一记录集合,针对不同的关键字进行排序可以得到不同序列。排序问题中通常将数据元素称为记录,输入的一个记录集合,排序后输出的也是一个记录集合,这种排序是一种线性操作。2、排序的稳定性在排序中的两条记录m、n,且m排序和n排序不相等,排序前规定m领先于n,如果排序后m仍然n,则属于稳定,否则就是不稳定排序。3、影响排序的三个要素排序分为内排序和外排序内排序:在内存中排原创 2021-07-11 12:30:24 · 776 阅读 · 1 评论