数据结构与算法
文章平均质量分 50
做一道光
互联网软件开发,已转汽车嵌入式软件开发
展开
-
数据结构与算法:希尔排序(java)
并没有固定的规则,有很多论文研究了各种不同的递增序列,但都无法证明某个序列是最好的,对于希尔排序的时间复杂度分析,已经超出了我们课程设计的范畴,所以在这里就不做分析了。的逆向数据,我们可以根据这个批量数据完成测试。测试的思想:在执行排序前前记录一个时间,在排序完成后记录一个时间,两个。那如果我们要提高效率,直观的想法就是一次交换,能把。前面学习插入排序的时候,我们会发现一个很不友好的事儿,如果已排序的分组元素为。,是插入排序算法的一种更高效的改进版本。个位置,可以减少交换的次数,,未排序的分组元素为。原创 2022-11-03 11:10:08 · 101 阅读 · 0 评论 -
数据结构与算法:插入排序(java)
开始时,我们的左手为空并且桌子上的牌面朝下。循环,其中内层循环的循环体是真正完成排序的代码,所以,我们分析插入排序的时间复杂度,主要分析一下内层循环体的执行次数即可。倒叙遍历已经排序的元素,依次和待插入的元素进行比较,直到找到一个元素小于等于待插入元素,那么就把待。推导法则,保留函数中的最高阶项那么最终插入排序的时间复杂度为。找到未排序的组中的第一个元素,向已经排序的组中进行插入;插入元素放到这个位置,其他的元素向后移动一位;把所有的元素分为两组,已经排序的和未排序的;最坏情况,也就是待排序的数组元素为。原创 2022-11-03 09:48:38 · 98 阅读 · 0 评论 -
数据结构与算法:冒泡排序(java)
循环,其中内层循环的循环体是真正完成排序的代码,所以,我们分析冒泡排序的时间复杂度,主要分析一下内层循环体的执行次数即可。对每一对相邻元素做同样的工作,从开始第一对元素到结尾的最后一对元素。最终最后位置的元素就是最大值。如果前一个元素比后一个元素大,就交换这两个元素的位置。推导法则,保留函数中的最高阶项那么最终冒泡排序的时间复杂度为。),是一种计算机科学领域的较简单的排序算法。在最坏情况下,也就是假如要排序的元素为。原创 2022-11-03 09:44:52 · 92 阅读 · 0 评论 -
数据结构与算法:选择排序(java)
每一次遍历的过程中,都假定第一个索引处的元素是最小值,和其他索引处的值依次进行比较,如果当前索引处。的值大于其他某个索引处的值,则假定其他某个索引出的值为最小值,最后可以找到最小值所在的索引。循环,其中外层循环完成了数据交换,内层循环完成了数据比较,所以我们分别统计数据。推导法则,保留最高阶项,去除常数因子,时间复杂度为。2.交换第一个索引处和最小值所在的索引处的值。选择排序是一种更加简单直观的排序方法。原创 2022-11-03 09:09:48 · 174 阅读 · 0 评论 -
数据结构与算法:冒泡排序(java)
冒泡排序的思想是通过对待排序序列从前往后依次比较相邻元素值,若发现逆序则交换,使值较大的元素从前逐步移向后面,就想水中气泡。原创 2022-10-31 17:02:07 · 84 阅读 · 0 评论 -
数据结构与算法:基数排序(java)
基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,以达到排序的作用,讲所有的待比较数值统一设置为同样的数位长度,位数比较短的数前面补零,然后从最低位开始依次进行一次排序,这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。基数排序是1887年赫尔曼、何乐礼发明的。思想是讲整数按位数切割成不同的数字,然后按每个位数分别比较。原创 2022-10-31 16:12:28 · 118 阅读 · 0 评论 -
数据结构与算法:各经典排序算法(java)
这种方法可行,但是存在于两个问题:一是要想对设计的算法运行性能进行评测就需要实际去运行该程序,而是所得时间统计量依赖于计算机硬件、软件等因素,这种方式要在同一台计算机的相同状态下运行,才能比较出哪一个算法速度更快,更好。,一般讨论的时间复杂度均是最坏情况下的时间复杂度,这样做的原因是最坏情况下的时间复杂度是算法在任何输入实例上运行的界限,这就保证了算法的运行时间不会比最坏情况更长。时间频度:一个算法花费的时间与算法中语句的执行次数成正比,哪一个算法中语句执行次数多,那么他所花费的时间就会多。原创 2022-10-30 16:34:35 · 464 阅读 · 0 评论 -
数据结构与算法:递归(java)
5、一个方法执行完毕后,或者遇到return,会就返回数据,遵守谁调用就将结果返回给谁,同时当方法执行完毕或者返回时,该方法也就执行完毕。递归就是方法自己去调用自己,每次调用时传入的参数是不同的,递归有助于解决程序中复杂的问题,同时可以让代码更为简洁。4、递归必须向退出递归的条件接近,否则就是无线递归,会出现StackOverflowError。给出一个小球的起始位置,求出该小球走到该图的右下角的路线,红色部分是墙,只有白色部分可以走。3、如果方法中使用的是引用型类型变量,比如数组,则会共享引用型的数据。原创 2022-10-30 15:50:36 · 87 阅读 · 0 评论 -
数据结构与算法:队列(java)
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。创建ArrayQueue类。原创 2022-10-29 17:12:37 · 88 阅读 · 0 评论 -
数据结构与算法:稀疏数组(java)
0表示默认值,可以发现的是记录了很多没有意义的数据。那么我们思考,如何能够把数据记录优化至最小呢。常见五子棋程序中,有黑子和蓝子棋子,使用二维数组来表示。创建SparseArray类。创建二维数组,模拟棋盘数据。把二维数组存放到稀疏数组中。把稀疏数组转换为二维数组。原创 2022-10-29 16:04:32 · 1047 阅读 · 0 评论 -
数据结构与算法:双链表(java)
双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。2.创建双链表类,编写增删改查方法。原创 2022-10-28 16:18:05 · 392 阅读 · 0 评论 -
数据结构与算法:单链表(java)
链表是一种物理存储单元上非连续,非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的。根据带有头部的单链表,实现商品增删改查,并且也可以针对商品已编号进行排序,完成排行榜。2.按照顺序添加数据结点。1.正常添加数据结点。原创 2022-10-27 22:04:58 · 374 阅读 · 0 评论 -
数据结构与算法:栈(java)
当字符串中的字符都入栈后,栈内就保存了一个反转后的字符串,最后的字符在栈顶,第一个字符在栈底。动态栈有链表的部分特性,即元素与元素之间在物理存储上可以不连续,但是功能有些受限制,动态栈只能在栈顶处进行插入和删除操作,不能在栈尾或栈中间进行插入和删除操作。其中,允许插入和删除的一端位于表的末端,叫做栈顶(top),不允许插入和删除的另一端叫做栈底(bottom)。,前者相当于表的插入操作(向栈顶插入一个元素),后者则是删除操作(删除一个栈顶元素)。由于栈是一个表,因此任何实现表的方法都可以用来实现栈。原创 2022-10-22 15:36:46 · 1108 阅读 · 0 评论 -
数据结构与算法概述
有很多种办法,你当然可以一本一本地找,也可以先根据书籍类别的编号,是人文,还是科学、计算机,来定位书架,然后再依次查找。笼统地说,这些查找方法都是算法。数据结构和算法是相辅相成的。数据结构是为算法服务的,算法要作用在特定的数据结构之上。因此,我们无法孤立数据结构来讲算法,也无法孤立算法来讲数据结构。为了方便查找,图书管理员一般会将书籍分门别类进行“存储”。按照一定规律编号,就是书籍这种“数据”的存储结构。二维数组,多维数组,广义表,树结构,图结构。1.3 数据结构和算法关系。数据结构是算法的基础。原创 2022-10-21 16:12:44 · 98 阅读 · 0 评论