插入排序简单应用 插入排序简介插入排序(Insertion Sorting)的基本思想是:把 n 个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有 n-1 个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。 思路分析 代码实现12345678910111213141516171819 2022-01-01 算法 排序
冒泡排序简单应用 冒泡排序简介冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒。 因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列已经有序,因此要在排序过程中设置一个标志 flag 判断元素是否进行过交换。从而减少不必要的 2021-12-31 算法 排序
选择排序简单应用 选择排序简介选择排序(select sorting)也是一种简单的排序方法。它的基本思想是: 第一次:从 arr[0] ~ arr[n-1] 中选取最小值,与 arr[0] 交换; 第二次:从 arr[1] ~ arr[n-1] 中选取最小值,与 arr[1] 交换; 第三次:从arr[2] ~ arr[n-1] 中选取最小值,与 arr[2] 交换; ……; 第 i 次:从 arr[i-1] 2021-12-31 算法 排序
常见排序算法介绍与分类 排序算法介绍排序也称排序算法 (Sort Algorithm),排序是将一组数据,依指定的顺序进行排列的过程。 排序的分类: 内部排序: 指将需要处理的所有数据都加载到内部存储器中进行排序。 外部排序法: 数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。 常见的排序算法分类 2021-12-27 算法 排序
算法的时间复杂度与空间复杂度 算法的时间复杂度度量一个程序(算法)执行时间的两种方法: 事后统计的方法 这种方法可行,但存在两个问题: 一是要想对设计的算法的运行性能进行评测,需要实际运行该程序; 二是所得时间的统计量依赖于计算机的硬件、软件等环境因素, 这种方式,要在同一台计算机的相同状态下运行,才能比较那个算法速度更快。 事前估算的方法 通过分析某个算法的时间复杂度来判断哪个算法更优。 时间频度一个算法花费的时 2021-12-27 算法
递归简单案例:迷宫问题与八皇后问题 关于递归(Recursion)调递归就是方法自己调用自己,每次调用时传入不同的变量。递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。 8皇后问题 , 汉诺塔, 阶乘问题, 迷宫问题, 球和篮子的问题( google 编程大赛) 各种算法中也会使用到递归,比如快排,归并排序,二分查找,分治算法等 用栈解决的问题——–>用递归代码比较简洁 递归调用机制 递归调用规则 执行一个方法时, 2021-12-27 算法 递归
栈的简单实现与应用 关于栈(Stack) 栈是一个先入后出(FILO - first in last out)的有序列表。 栈是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)。 根据栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最先放 2021-12-26 数据结构 栈
单链表、双向链表的应用及面试题 链表概述 链表介绍 链表是一种物理存储单元上非连续,非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的。 链表特点 链表是以结点形式存储的,是链式存储 每个结点包含 data 区域和 next 区域 如上图各个结点并不是连续存储的 链表分带头结点链表和没有带头结点链表,根据实际的需求来确定带头结点链表逻辑结构 单链表单链表 (带头结点) 逻辑结构示意图: 简单实现使用 2021-12-26 数据结构 链表 面试题
数组模拟队列与环形队列 队列是一个有序列表,可以用【数组】或【链表】来实现 遵循先入先出的原则。即:先存入队列的数据,要先取出;后存入的要后取出。 数组模拟队列思路分析 示意图 队列本身是有序列表,若使用数组的结构来存储队列的数据,则队列数组的声明如上图, 其中 maxSize 是该队列的最大容量。 因为队列的输出、输入是分别从前后端来处理,因此需要两个变量 front及rear分别记录队列前后端的下标,fr 2021-12-26 数据结构 队列
稀疏数组的简单应用 需求分析 使用稀疏数组,来保留类似前面的二维数组(棋盘、地图等等); 把稀疏数组存盘,并且可以从新恢复原来的二维数组数; 稀疏数组原理图: 思路分析 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。 稀疏数组的处理方法是: 记录数组一共有几行几列,有多少个不同的值; 把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模。 思 2021-12-26 数据结构 数组