- 博客(14)
- 收藏
- 关注
原创 数据结构: 排序(归并排序)
基本思想采用分而治之的思想进行排序。将一个大问题分解为多个小问题进行求解之后在进行整合1、将给定的数组进行拆分,直到拆分为每个子数组的元素个数都为1。这样每个字数组都是有序的数组了(一个元素当然有序)2、步骤1中的子数组进行两两合并,并且保证所有的数组合并完成之后都是有序的。3、重复步骤2,最终将得到一个有序数组合并算法此时数组的两部分都是有序的/** * 合并算法 * @param a * @param left * @param mid *
2021-05-05 10:50:49
124
原创 数据结构:排序(快速排序)
基本思想1、将数组根据给定的值分为两个部分,其中一部分的值都小于给定值,另一部分的值都大于给定值。2、对每一部分的重复执行步骤13、直到每部分数组的数量长度都是1,则完成整个排序使用集合进行演示/** * 快速排序的基础 * @param items */ public static void sort(List<Integer> items){ if(items.size() > 1){ List&l
2021-05-05 10:26:53
145
原创 数据结构:排序(希尔排序)
基本思想1、希尔排序是对插入排序的优化2、希尔排序每次按照一定的步长对原有数组进行分组,每个组进行插入排序。 step = length/2 则 0, 0+step 为一组; 1, 1+step 为一组; i, i+step为一组。3、逐渐缩小步长,重复步骤2,直至步长为1,在进行最后一次插入排序,则完成整个排序代码package sort;/** * 希尔排序: * 希尔排序是对插入排序的优化 * 希尔排序每次按照一定的步长对原有数组进行分组,每个组进行插入排序。 step = len
2021-05-04 13:12:42
284
原创 数据结构: 排序(插入排序)
算法思想算法思想: 就好比我们抓纸牌,每次新抓入一张纸牌,从右到左寻找它的位置。第一次 看第一个元素,显然左边没有比他更小的元素了,所以它当前的位置就是0第二次 看第二个元素,和第一个元素比较,如果它小于第一个元素,则它的位置放到第一个元素的位置,否则就在原位置第三次 在这时,其实讲过前两次的排序i=0, i=1上的两个元素已经是有序的了。那么第三个元素首先和第二个元素相比较,如果它小于第二个元素则和第二个元素进行交换;然后再和第一个元素比较,如果小于第一个元素则继续和第一个元素交换。第i次排序
2021-05-02 23:42:57
139
原创 数据结构:排序(选择排序)
算法思想每次从a[i]到a[n]中找出最小的元素,和a[i]进行交换。和冒泡排序的区别是,每次比较不进行交换,只有一轮结束之后才进行交换。总共进行n-1轮代码实现package sort;/** * 选择排序 * 排序思想: * 每次从a[i]到a[n]中找出最小的元素,和a[i]进行交换。和冒泡排序的区别是,每次比较不进行交换,只有一轮结束之后才进行交换。 * 总共进行n-1轮 */public class SelectSort { public static void
2021-05-02 23:24:33
90
原创 数据机构: 排序(冒泡排序)
算法思想从前往后依次比较相邻元素的值,若发现逆序则进行交换,使值较大的元素逐渐从前向后移动,最终使最大的值位于数组的末端。通过n-1次排序完成排序代码package sort;/** * 冒泡排序 * 基本思想:从前往后依次比较相邻元素的值,若发现逆序则进行交换,使值较大的元素逐渐从前向后移动,最终使最大的值位于数组的末端。通过n-1次排序完成排序 */public class BubbleSort { public static void main(String[] args)
2021-05-02 17:35:47
134
原创 数据结构: 递归(八皇后)
题目八皇后算法描述如下:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法代码package recursion;/** * 八皇后算法描述如下:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法 */public class Queen8 { private int count = 0; /** * 表示8个皇后
2021-05-02 17:34:18
130
原创 数据结构:栈 (基础计算器,中缀表达式)
问题描述给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。输入:s = “1 + 1”输出:2输入:s = " 2-1 + 2 "输出:3输入的字符串中只有 + , -, *, /这些除去数字之外的字符串, 且舒服的数字只有1-9。思路分析使用两个栈,一个是数字栈用来存在数字,一个是符号栈用来存放操作符(+,-,*,/)从0开始遍历整个输入字符串,如果当前index获取到的是数字,则push到数字栈中如果当前index返回的是操作符。如果操作符栈为空,则
2021-04-19 17:44:29
148
原创 数据结构: 栈
定义栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。接口定义package stack;public interface Stack { /** * 元素入栈 * @param i */
2021-04-18 22:47:11
91
原创 数据结构:链表(约瑟夫环)
问题描述m个人围成一个圈,指定一个数字k, 从第一个人开始报数,每轮报到k的选手出局,由下一个人接着从头开始报,最后一个人是赢家。其中m>1,k>2。链表实现思路分析构建一个环形链表,从头指针开始报数,每次报数后头指针向后移动一位,当移动 k-1 次后,头指针所在的节点就是要被剔除的节点,剔除当前节点后,头指针指向下一个节点。为了能移除头指针还需要另外一个指针tail(除非只剩下最后一个节点,否则tail指针的next始终为head指针)。移除当前head指针所在的节点的逻辑为 : h
2021-04-17 18:21:31
142
原创 数据结构: 链表 (反转链表,查找倒数第k个节点)
定义链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,操作复杂。由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而线性表和顺序表相应的时间复杂度分别是O(logn)和O
2021-04-12 16:16:53
194
原创 数据结构: 队列
定义队列是一种特殊的线性表,因为队列只允许在一端插入,在另一端删除,所以只有最早进入队列的元素才能最先从队列中删除,故队列又称为先进先出(FIFO—first in first out)队列接口package queue;public interface Queue { /** * 从队列中获取数据,head指针后移 * @return */ int get(); /** * 向队列中添加数据,tail指针后移 * @pa
2021-04-10 13:21:51
217
1
原创 一、事件与运算
一、随机试验定义E为一次试验,当满足以下条件:相同条件下可重复试验的结果具有多样性&试验前所有的结果都是已知的试验前不能确定发生那种结果的试验,称为随机试验例扔硬币 {正面,反面}扔骰子 {1,2,3,4,5,6}二、样本空间定义E为一次随机试验,E 的所有可能的基本结果组成的集合,称为E的样本空间 。记作:Ω\OmegaΩ例扔骰子E: Ω\OmegaΩ = {1,2,3,4,5,6}三、随机事件定义E为随机试验, Ω\OmegaΩ 为E的样本空间。Ω\
2020-09-28 19:59:37
479
原创 注意:为事务管理器指定的 DataSource 必须和用来创建 SqlSessionFactoryBean 的是同一个数据源,否则事务管理器就无法工作了。 why?
一 、mybatis单独使用构建SqlSessionFactoryString resource = "org/mybatis/example/mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFact...
2020-01-13 14:07:01
2103
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅