- 博客(10)
- 收藏
- 关注
原创 关于排序算法的学习与总结2--快速、归并和基数排序
(注:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;在治阶段我们需要将两个已经有序的子序列合并成一个有序序列,比如上图中的最后一次合并,要将[4,5,7,8]和[1,2,3,6]两个已经有序的子序列,合并为最终序列[1,2,3,4,5,6,7,8],有8个数据就需要合并 8 - 1 次。基数排序法是效率高的。
2024-05-21 21:30:02 458
原创 关于排序算法的学习与总结1---冒泡、选择、插入、希尔排序
排序算法(SortAlgorithm)也称排序,排序是将一组数据,依指定的顺序进行排列的过程1)内部排序: 指将需要处理的所有数据都加载到内部存储器(内存)中进行排序:2)外部排序法:数据量过大,无法全部加载到内存中,需要借助外部存储(文件等)进行排序平均时间复杂度是指所有可能的输入实例均以等概率出现的情况下,该算法的运行时间。最坏情况下的时间复杂度称最坏时间复杂度。一般讨论的时间复杂度均是最坏情况下的时间复杂度。
2024-05-14 13:57:58 644 1
原创 运用递归解决迷宫问题和八皇后问题
简单的说:递归就是方法自己调用自己,每次调用时传入不同的变量,递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。在实际的开发中有很多问题都是重复的思路,比如迷宫问题、八皇后、汉诺塔和排序等等。执行一个方法时,就创建一个新的受保护的独立空间(栈空间)方法的局部变量是独立的,不会相互影响,比如int n变量如果方法中使用的是引用类型变量(比如数组),就会共享该引用类型的数据递归必须向退出递归的条件逼近,否则就是无限递归,出现 StackOverflowError当一个方法执行完毕,或者遇到return,就
2024-05-06 15:51:13 341 1
原创 将中缀表达式转为逆波兰表达式并计算
创建两个栈分别存放数字和符号,然后通过符号间的优先级关系判断是否前一个符号是否可以计算,也就是使用栈来计算中缀表达式。中缀表达式得出的后缀表达式不唯一,只要不破坏中缀表达式里本身的运算优先级,就能得到与中缀表达式得到一致的结果。因为直接对表达式str 进行操作不方便,因此先将"1+((2+3)×4)-5" 中缀的表达式转化为对应的list集合。5.2 如果是右括号“)”,则依次弹出s1栈顶的运算符,并压入s2,直到遇到左括号为止,8)依次弹出 s2中的元素并输出,结果的逆序即为中缀表达式对应的后缀表达式。
2024-04-23 16:23:17 768
原创 使用数据结构栈来计算中缀表达式
栈的英文为(stack)栈是一个先入后出(FILO-FirstIn LastOut)的有序列表。栈是限制线性表中元素的插入和删除只能在线性表的同一端进行的种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)。根据栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在顶,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除。
2024-04-23 15:17:06 1112
原创 用单向环形链表解决约瑟夫问题
/定义Boy节点//编号//指向下一个节点,默认null//因为成员变量是private,所以要提供对应的get和set方法return no;System.out.println("测试出圈方法是否正确");
2024-04-18 18:38:11 369 1
原创 双向链表的实现以及添加节点时按照序号进行排序添加
/构造器//为了显示方法,我们重新toString@Override'}';双向链表类的创建://创建一个双向链表的类// 先初始化一个头节点, 头节点不要动, 不存放具体的数据//返回头结点//遍历链表的方法//先判断链表是否为空System.out.println("链表为空");return;= null) {//添加节点的方法//头结点不能变化,需要借助一个虚拟头结点= null) {//按照节点的no能够进行排序。
2024-04-15 12:39:57 352 1
原创 单向链表的实现以及相关算法题
/定义HeroNode节点,每个HeroNode节点就是一个对象//构造器//为了显示方法,我们重新toString@Override'}';
2024-04-14 21:07:13 255
原创 用数组实现队列和环形队列
若尾指针 rear 小于队列的最大下标 maxSize-1,则将数据存入rear所指的数组元素中,否则无法存入数据。front变量的含义做一个调整:front就指向队列的第一个元素,也就是说arr[front]就是队列的第一个元素. front的初始值=0。rear变量的含义做一个调整:rear指向队列的最后一个元素的后一个位置,因为希望空出一个空间 做为约定. rear的初始值=0。队列本身是有序列表,若使用数组的结构来存储队列的数据,则队列数组的声明如下图,其中 maxSize 是该队列的最大容量。
2024-04-14 13:25:37 305 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人