算法实例
文章平均质量分 65
一些常见算法的实现
Logicr
记性差,记录下,查阅方便些,水平有限,若参阅请自行斟酌。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JAVA实现双向链表
用java写链表简直爽歪歪 我中有你,你中有我 package task4_14; interface Link {//接口,放各种链表操作的方法 void add (Object obj); boolean remove (int index); int indexOf(Object obj); boolean set(int index,Obje...原创 2018-04-16 21:09:47 · 230 阅读 · 0 评论 -
JAVA实现动态栈
在数据结构中,栈是一种极其实用的结构 所以,有必要将其掌握,栈的特点是“先入后出”,只能从一端进,一端出。 package stack;//包名 interface Stack {//接口,一些可能会用的方法 void stackPush(Object obj);//入栈 void stackPop();//出栈 int stackSize();//获取栈中元素数量 Obje...原创 2018-04-22 15:39:59 · 947 阅读 · 0 评论 -
JAVA 应用栈对RPN逆波兰表达式求值
逆波兰表达式(后缀表达式) 逆波兰表达式,它的语法规定,表达式必须以逆波兰表达式的方式给出。逆波兰表达式又叫做后缀表达式。这个知识点在数据结构和编译原理这两门课程中都有介绍,下面是一些例子: 正常的表达式 逆波兰表达式 a+b ---> a,b,+ a+(b-c) ---> a,b,c,-,+ a+(b-c)*d ---> a,b,c,-,d,*,+ a+d*(...原创 2018-04-23 00:20:42 · 1078 阅读 · 0 评论 -
JAVA栈应用之括号匹配
JAVA栈应用之括号匹配 在数据处理中,常常要判断数据中的括号,应用栈来处理及其方便。 当用户输入一个字符串时,遇到左括号时,将其入栈,如’(’ ‘[”’{,而遇到右括号时,如’)”}”]’时,与栈顶的括号与当前匹配,如果匹配成功,则将栈中的括号出栈,表示当前括号成对。 如匹配失败,又分为两种情况,栈已经空和栈不空,若栈已空,则现在右括号比左括号多()},栈不空则很明显,当...原创 2018-04-26 23:10:18 · 2331 阅读 · 0 评论 -
JAVA泛型与栈应用
从JDK1.5以后引入了三大常用新特性:泛型(Genericity)、枚举(enum)、注解(Annotation)。其中在JDK1.5中泛型是一个非常重要的实现技术,它可以帮助我们解决程序的参数转换问题。 泛型假设需要定义一个描述坐标的程序类Point,需要提供两个属性x、y。对于这两个属性的内容可能有如下选择: x = 10、y = 20 ; x = 10.1、y = 20...原创 2018-04-27 09:49:08 · 1898 阅读 · 0 评论 -
JAVA泛型及栈应用之简单迷宫
JAVA泛型及栈应用之简单迷宫 将泛型与栈结合结合之后,可以高效解决一些数据结构中的问题,其中,走迷宫便是我们最常遇到的一类。再此之前,需要对栈以及泛型有所了解:>JAVA泛型与栈应用< 这里,先以简单迷宫为例: 假设现在有一个6X6的矩形迷宫,1表示通路,其他表示无路。 如果以[5][2]为入口,那么,走出迷宫的路径应该为: 那该如何用代码来走呢? 思路...原创 2018-04-30 17:00:44 · 551 阅读 · 0 评论 -
JAVA 夺命二叉树基本操作
燕雀安知鸿鹄之志哉。—《陈涉世家》 二叉树的基本操作 创建二叉树 前序遍历 中序遍历 后续遍历 层序遍历 求二叉树的节点数 求二叉树的叶子节点个数 求K层节点数 获取一个节点的双亲结点 查找某个节点 判断一个数是不是完全二叉树 目录: 创建节点 创建树 前、中、后序遍历 层序...原创 2018-06-13 17:47:42 · 264 阅读 · 0 评论 -
JAVA 分成块块的归并排序
庭前落尽芙蓉,水边开彻芙蓉。—朱庭玉(元) 天净沙·秋思 目录: 归并排序 分析 定义一个Node类用来装元素 分割 合并 测试代码 全部代码 小结 归并排序 归并排序是数据结构中比较重要对同一种排序方法,属于必须掌握的范畴。 分析 主要分为两大步: 1.分割,将数据(节点)一分为二,依次递归,递归… 2.合并,将一个个数据(节点)合二为一; 定义一个N...原创 2018-06-15 00:52:25 · 312 阅读 · 0 评论 -
JAVA 快速排序真的很快
却是五侯家未识,春风不放过江来。 —罗邺《梅花》 快速排序 在排序算法中,快速排序是一种较快的排序算法,其时间复杂度为O(N*logN)。 主要思想 快速排序的主要思想为: 1.确定基准数 2.较大数、较小数(相比基准数)分离 3.递归1、2步。 快速排序又叫分治法,也就是分块治理,把当前块分成较大数块、较小数块之后,再把较大数块,较小数块看成一个单独的块进行排...原创 2018-07-06 10:42:28 · 583 阅读 · 0 评论 -
判断字符串是否表示数值
日色欲尽花含烟,月明欲素愁不眠。—李白《长相思·其二》 要点: 字符数组转字符串new String(charArray) []表示里面的内容只有一个会出现,[+-]只会+或- ?表示前面的内容可出现0次或1次,[+-]?表示可能会有+、-中一个 d数字,等价于[0-9] (*)表示前面的内容出现任意次 d*即:数字出现任意次(可以0次,.12也算数字) ()表示子串,(.\d*)?...原创 2018-07-29 21:53:38 · 1581 阅读 · 0 评论 -
把数组排成最小的数
万户千门成野草,只缘一曲后庭花。—刘禹锡《台城》 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 import java.util.Arrays; import java.util.Comparator; /** * 把数组排成最小的数 * 输入一个正...原创 2018-07-31 23:47:08 · 313 阅读 · 0 评论 -
[动态规划试炼]最大连续数列和
春风十里扬州路,卷上珠帘总不如。 ——杜牧《赠别》 对于一个有正有负的整数数组,请找出总和最大的连续数列。 给定一个int数组A和数组大小n,请返回最大的连续数列的和。保证n的大小小于等于3000。 测试样例: [1,2,3,-6,1] 返回:6 解题步骤,分析四要素: 状态定义:F(i):以A[i]结尾的连续最大子序列的和; 递推:F(i) = max(F(i)+A[i]...原创 2018-08-23 23:18:15 · 727 阅读 · 0 评论 -
选择排序
寂寞空庭春欲晚,梨花满地不开门。 ——刘方平《春怨》 时间复杂度:O(N2) 主要思想(升序):每次从待排元素中找出最小的元素,然后与起始位置的值交换,实现小元素向前移动。 import java.util.Arrays public void selectSort(int [] array){ //测试用例:array = {4,6,8,3,8,9,5,4,8,7}; ...原创 2018-08-29 10:03:29 · 224 阅读 · 0 评论 -
二分查找的递归与非递归写法
卷旗夜劫单于帐,乱斫胡儿缺宝刀。——马戴《出塞词》 时间复杂度:O(NlogN),查询效率虽然高,但是条件必须是待查元素必须有序。 非递归:int[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9}; /** * 二分查找的常规写法 * * @param array 待查数组 * @param k 查询值 ...原创 2018-08-29 15:39:27 · 348 阅读 · 0 评论