#自然数

吴裕雄--天生自然数据结构:静态链表基本操作

静态链表添加元素从备用链表中摘除一个节点,用于存储元素4;找到表中第2个节点(添加位置的前一个节点,这里是数据元素2),将元素2的游标赋值给新元素4;将元素4所在数组中的下标赋值给元素2的游标;//向链表中插入数据,body表示链表的头结点在数组中的位置,add表示插入元素的位置,a表示要插入的数据voidinsert...

吴裕雄--天生自然数据结构:静态链表及其创建

静态链表,也是线性存储结构的一种,它兼顾了顺序表和链表的优点于一身,可以看做是顺序表和链表的升级版。使用静态链表存储数据,数据全部存储在数组中(和顺序表一样),但存储位置是随机的,数据之间"一对一"的逻辑关系通过一个整形变量(称为"游标",和指针功能类似)维持(和链表类似)。创建一个足够大的数组,假设大小为6接着,在将...

吴裕雄--天生自然数据结构:单链表的基本操作

创建链表的代码如下所示://声明节点结构typedefstructLink{intelem;//存储整形元素structLink*next;//指向直接后继元素的指针}link;//创建链表的函数link*initLink(){link*p=(link*)malloc(sizeof(link));//创建一个头结点li...

吴裕雄--天生自然数据结构:单链表,链式存储结构

链表,别名链式存储结构或单链表,用于存储逻辑关系为"一对一"的数据。与顺序表不同,链表不限制数据的物理存储状态,换句话说,使用链表存储的数据元素,其物理存储位置是随机的。数据元素随机存储,并通过指针表示数据之间逻辑关系的存储结构就是链式存储结构。链表中每个数据的存储都由以下两部分组成:数据元素本身,其所在的区域称为数据...

吴裕雄--天生自然数据结构:顺序表的基本操作

顺序表插入元素向已有顺序表中插入数据元素,根据插入位置的不同,可分为以下3种情况:插入到顺序表的表头;在表的中间位置插入元素;尾随顺序表中已有元素,作为顺序表中的最后一个元素;虽然数据元素插入顺序表中的位置有所不同,但是都使用的是同一种方式去解决,即:通过遍历,找到数据元素要插入的位置,然后做如下两步工作:将要插入位置...

吴裕雄--天生自然数据结构:线性表(线性存储结构)

线性表,全名为线性存储结构。使用线性表存储数据的方式可以这样理解,即“把所有数据用一根线儿串起来,再存储到物理空间中”。如图  将具有“一对一”关系的数据“线性”地存储到物理空间中,这种存储结构就称为线性存储结构(简称线性表)。...

吴裕雄--天生自然数据结构:算法时间复杂度和空间复杂度

算法,即解决问题的方法。同一个问题,使用不同的算法,虽然得到的结果相同,但是耗费的时间和资源是不同的。就比如要拧一个螺母,使用扳手还是钳子是有区别的,虽然使用钳子也能拧螺母,但是没有扳手好用。很多人误以为程序就是算法,其实不然:算法是解决某个问题的想法、思路;而程序是在心中有算法的前提下编写出来的可以运行的代码。例如,...

吴裕雄--天生自然数据结构:常用数据结构

数据结构是学习数据存储方式的一门学科数据结构大致包含以下几种存储结构:线性表,还可细分为顺序表、链表、栈和队列;树结构,包括普通树,二叉树,线索二叉树等;图存储结构;线性表线性表结构存储的数据往往是可以依次排列的,就像小朋友手拉手,每位学生的前面和后面都仅有一个小朋友和他拉手,具备这种“一对一”...

吴裕雄--天生自然数据结构与算法:java代码实现常用数据结构——链表Linked List

classNode{//定义节点类privateStringdata;//保存节点内容privateNodenext;//表示保存下一个节点publicNode(Stringdata){//通过构造设置节点内容this.data=data;//设置内容}publicvoidsetNext(Nodenext){this....

吴裕雄--天生自然数据结构与算法:java代码实现常用数据结构——数组

1,数组【Array】特点:长度固定、查找方便【直接使用index查找即可】、增加、删除麻烦。publicclassDemo1_Array{publicstaticvoidmain(String[]args){String[]array=newString[5];//需要初始化长度array[0]="hello";ar...

吴裕雄--天生自然数据结构:十大经典排序算法——基数排序

基数排序基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数。1.基数排序vs计数排序vs桶排序基数排序有两种方法:这三种排序算法都利用了桶的概念,但对桶的使用方法上有明显差异:基...

吴裕雄--天生自然数据结构:十大经典排序算法——桶排序

桶排序是计数排序的升级版。它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。为了使桶排序更加高效,我们需要做到这两点:在额外空间充足的情况下,尽量增大桶的数量使用的映射函数能够将输入的N个数据均匀的分配到K个桶中同时,对于桶中元素的排序,选择何种比较排序算法对于性能的影响至关重要。什么时候最快当输入的数据...

吴裕雄--天生自然数据结构:十大经典排序算法——计数排序

计数排序计数排序的核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。1.计数排序的特征当输入的元素是n个0到k之间的整数时,它的运行时间是Θ(n+k)。计数排序不是比较排序,排序的速度快于任何比较排序算法。由于用来计数的数组...

吴裕雄--天生自然数据结构:十大经典排序算法——堆排序

堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆排序可以说是一种利用堆的概念来排序的选择排序。分为两种方法:大顶堆:每个节点的值都大于或等于其子节点的值,在堆排序算法中用于升序排列;小顶堆:...

吴裕雄--天生自然数据结构:十大经典排序算法——快速排序

快速排序快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序n个项目要Ο(nlogn)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(nlogn)算法更快,因为它的内部循环(innerloop)可以...
首页上一页123下一页尾页