数据结构与算法
文章平均质量分 75
稀疏数组、单向队列、环形队列、单向链表、双向链表、环形链表、约瑟夫问题、栈、前缀、中缀、后缀表达式、中缀表达式转换为后缀表达式、递归与回溯、迷宫问题、八皇后问题、算法的时间复杂度、冒泡排序、选择排序、插入排序、快速排序、归并排序、希尔排序、基数排序(桶排序)、堆排序、排序速度分析、二分查找、插值查找
Strine
希望我的风格能成为你的小众爱好
展开
-
基数排序算法(典型的空间换时间)
基数排序属于“分配式排序”,又称“桶子法”,顾名思义,它是通过键值的各个位的值将要排序的元素分配至某些桶中,达到排序的作用;基数排序法是属于稳定性的排序,基数排序法是效率高的稳定性排序法;基数排序是桶排序的扩展;它是将整数按位数切割成不同的数字,然后按每个位数分别比较;2.基数排序是典型的空间换时间的方式,占用内存很大,因此当面对海量数据排序的时候很容易造成OutOfMemoryError原创 2023-04-21 15:46:17 · 244 阅读 · 0 评论 -
归并排序算法
归并序是利用归并的思想实现的排序方法,该算法采用经典的分治策略(分治法将问题分成一些小的问题然后递归求解,而治的阶段将分的阶段得到的答案“修补“在一起,即分而治之)。原创 2023-04-20 16:30:28 · 90 阅读 · 0 评论 -
快速排序算法
快速排序是对冒泡排序的一种改进,基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一个部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列;原创 2023-04-19 18:25:03 · 71 阅读 · 0 评论 -
希尔排序(交换法和移位法)
希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序;希尔排序是把记录按下标的一定增量分组;对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1的时,整个文件恰被分成一组,算法便终止;原创 2023-04-18 17:44:10 · 152 阅读 · 0 评论 -
插入排序算法
插入式排序属于内部排序法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的;使用Java实现插入排序它的基本思想是:把n个待排序的元素看成(想象出来的)为一个有序表和一个无序表,始时有序表只包含一个元素,无序表中包含n-1个元素,排序的过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表的排序码进行比较,将它插入到有序表中的适当位置,使之称为新的有序表;原创 2023-04-17 17:31:27 · 99 阅读 · 0 评论 -
选择排序算法
选择式排序也属于内部排序法,是从欲排序的数据中,按指定的规则选出某一元素,再依规定交换位置后达到排序的目的;是一种简单的排序方法,它的基本思想是:第一次从arr[0]-arr[n-1]中选取最小值与arr[0]进行交换,第二次从arr[1]-arr[n-1]中选取最小值与arr[1]交换,以此类推,最终在arr[n-2]-arr[n-1]中选取最小值与arr[n-2]进行交换总过通过n-1次,得到一个按排序码从小到大排列的有序序列;原创 2023-04-17 15:33:45 · 75 阅读 · 0 评论 -
冒泡排序算法(优化前与优化后代码实现)
冒泡排序的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部;就像水底下的气泡一样逐渐向上冒;原创 2023-04-17 14:21:04 · 80 阅读 · 0 评论 -
排序算法绪论(时间频度、时间复杂度、空间复杂度)
一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多,一个算法中的语句的执行次数称为语句频度或者时间频度,记为T(n);,一个算法的空间复杂度定义为该算法所耗费的存储空间,它也是问题规模n的函数;原创 2023-04-16 16:08:17 · 109 阅读 · 0 评论 -
递归(回溯算法解决八皇后问题)
在国际象棋8x8格中,任意两个皇后都不能处于同一行、同一列、或同一斜线;原创 2023-04-16 13:32:41 · 279 阅读 · 0 评论 -
递归(迷宫回溯问题的实现)
递归其实就是方法自己调用自己,每次调用时传入不同的变量,递归有助于编程者解决复杂的问题,同时可以让代码变得更简洁;原创 2023-04-15 16:10:31 · 204 阅读 · 0 评论 -
栈(中缀表达式转后缀[逆波兰]表达式的实现)
目的:将传入的中缀表达式转为后缀表达式;原创 2023-04-14 18:34:58 · 107 阅读 · 0 评论 -
栈(前缀、中缀、后缀表达式及逆波兰计算器的实现)
通过我们刚刚介绍的前缀表达式的计算机实现来讲,只要前缀表达式是正确的,我们不需要去判断运算符的优先级,并且在一个栈中就可以完成整个表达式的运算;要求输入一个逆波兰表达式(后缀表达式),我们使用系统提供的栈(Stack)计算其结果;支持小括号和多位数整数,我们这里主要讲的是数据结构,因此计算器进行了简化,只支持整数运算;原创 2023-04-14 16:35:48 · 282 阅读 · 0 评论 -
栈(综合计算器的实现)
1.栈(stack)是一个先入后出的有序列表;2.栈是为了限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊性表,允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom);因此我们可以将栈的结构理解为一口井;3.根据上面栈的定义可以知道,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除;原创 2023-04-13 17:43:39 · 1113 阅读 · 0 评论 -
链表(单向链表&双向链表&单向环形链表及约瑟夫问题)
1.链表是以节点的方式来存储的;2.每个节点包括了和,其中data域就是存放元素的,next域就是指向下一个节点的;3.链表的每个节点都不一定是连续存储的;4.链表根据结构可以分为,根据需求可以选择;原创 2023-04-12 17:43:28 · 88 阅读 · 0 评论 -
环形队列(介绍与代码实现)
1.之前实现的队列中的数组在使用一次之后就不能使用了,;2.因此我们将这个数组使用算法,改进成一个环形队列;原创 2023-04-11 16:37:30 · 157 阅读 · 0 评论 -
队列(基本使用以及存在的问题)
1.队列是一个有序列表,可以使用数组或者链表来实现;2.遵循先进先出的原则,即先存入队列的数据要先取出,后存入的要后取出;原创 2023-04-11 15:02:23 · 220 阅读 · 0 评论 -
稀疏数组(与二维数组的互相转换)
当一个数组中的大部分元素都为0,或者为同一个默认值的时候,可以使用稀疏数组来保存该数组。原创 2023-04-10 17:03:09 · 128 阅读 · 0 评论