算法实例
文章平均质量分 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 · 208 阅读 · 0 评论 -
JAVA实现动态栈
在数据结构中,栈是一种极其实用的结构 所以,有必要将其掌握,栈的特点是“先入后出”,只能从一端进,一端出。 package stack;//包名interface Stack {//接口,一些可能会用的方法void stackPush(Object obj);//入栈void stackPop();//出栈int stackSize();//获取栈中元素数量Obje...原创 2018-04-22 15:39:59 · 896 阅读 · 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 · 1008 阅读 · 0 评论 -
JAVA栈应用之括号匹配
JAVA栈应用之括号匹配 在数据处理中,常常要判断数据中的括号,应用栈来处理及其方便。 当用户输入一个字符串时,遇到左括号时,将其入栈,如’(’ ‘[”’{,而遇到右括号时,如’)”}”]’时,与栈顶的括号与当前匹配,如果匹配成功,则将栈中的括号出栈,表示当前括号成对。 如匹配失败,又分为两种情况,栈已经空和栈不空,若栈已空,则现在右括号比左括号多()},栈不空则很明显,当...原创 2018-04-26 23:10:18 · 2266 阅读 · 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 · 1831 阅读 · 0 评论 -
JAVA泛型及栈应用之简单迷宫
JAVA泛型及栈应用之简单迷宫将泛型与栈结合结合之后,可以高效解决一些数据结构中的问题,其中,走迷宫便是我们最常遇到的一类。再此之前,需要对栈以及泛型有所了解:>JAVA泛型与栈应用< 这里,先以简单迷宫为例: 假设现在有一个6X6的矩形迷宫,1表示通路,其他表示无路。 如果以[5][2]为入口,那么,走出迷宫的路径应该为: 那该如何用代码来走呢? 思路...原创 2018-04-30 17:00:44 · 521 阅读 · 0 评论 -
JAVA 夺命二叉树基本操作
燕雀安知鸿鹄之志哉。—《陈涉世家》 二叉树的基本操作 创建二叉树 前序遍历 中序遍历 后续遍历 层序遍历 求二叉树的节点数 求二叉树的叶子节点个数 求K层节点数 获取一个节点的双亲结点 查找某个节点 判断一个数是不是完全二叉树目录:创建节点创建树前、中、后序遍历层序...原创 2018-06-13 17:47:42 · 206 阅读 · 0 评论 -
JAVA 分成块块的归并排序
庭前落尽芙蓉,水边开彻芙蓉。—朱庭玉(元) 天净沙·秋思目录:归并排序分析定义一个Node类用来装元素分割合并测试代码全部代码小结归并排序归并排序是数据结构中比较重要对同一种排序方法,属于必须掌握的范畴。分析主要分为两大步:1.分割,将数据(节点)一分为二,依次递归,递归…2.合并,将一个个数据(节点)合二为一;定义一个N...原创 2018-06-15 00:52:25 · 284 阅读 · 0 评论 -
JAVA 快速排序真的很快
却是五侯家未识,春风不放过江来。 —罗邺《梅花》 快速排序 在排序算法中,快速排序是一种较快的排序算法,其时间复杂度为O(N*logN)。 主要思想 快速排序的主要思想为:1.确定基准数2.较大数、较小数(相比基准数)分离3.递归1、2步。快速排序又叫分治法,也就是分块治理,把当前块分成较大数块、较小数块之后,再把较大数块,较小数块看成一个单独的块进行排...原创 2018-07-06 10:42:28 · 560 阅读 · 0 评论 -
判断字符串是否表示数值
日色欲尽花含烟,月明欲素愁不眠。—李白《长相思·其二》要点:字符数组转字符串new String(charArray)[]表示里面的内容只有一个会出现,[+-]只会+或-?表示前面的内容可出现0次或1次,[+-]?表示可能会有+、-中一个d数字,等价于[0-9](*)表示前面的内容出现任意次 d*即:数字出现任意次(可以0次,.12也算数字)()表示子串,(.\d*)?...原创 2018-07-29 21:53:38 · 1526 阅读 · 0 评论 -
把数组排成最小的数
万户千门成野草,只缘一曲后庭花。—刘禹锡《台城》输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。import java.util.Arrays;import java.util.Comparator;/** * 把数组排成最小的数 * 输入一个正...原创 2018-07-31 23:47:08 · 277 阅读 · 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 · 684 阅读 · 0 评论 -
选择排序
寂寞空庭春欲晚,梨花满地不开门。 ——刘方平《春怨》 时间复杂度:O(N2) 主要思想(升序):每次从待排元素中找出最小的元素,然后与起始位置的值交换,实现小元素向前移动。import java.util.Arrayspublic void selectSort(int [] array){ //测试用例:array = {4,6,8,3,8,9,5,4,8,7};...原创 2018-08-29 10:03:29 · 210 阅读 · 0 评论 -
二分查找的递归与非递归写法
卷旗夜劫单于帐,乱斫胡儿缺宝刀。——马戴《出塞词》时间复杂度:O(NlogN),查询效率虽然高,但是条件必须是待查元素必须有序。非递归:int[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9}; /** * 二分查找的常规写法 * * @param array 待查数组 * @param k 查询值 ...原创 2018-08-29 15:39:27 · 315 阅读 · 0 评论