- 博客(18)
- 收藏
- 关注
原创 java编程思想:判断两个对象内容是否相等
自定义的类是否相等equals方法的重写重写equals方法使得逻辑上姓名相同的两个对象被判定为相等的对象public boolean equals(Object obj) { //利用instanceof 方法,判断obj是否是Name的实例,是则返回True if(obj instanceof Name){ Name name=(Name)obj;...
2019-01-16 11:36:23 1461
原创 java编程思想学习笔记:容器
容器与数组数组:存储的基本数据类型/对象,但是数组的尺寸恒定。容器:存放对象Object,可自定义调整自己的尺寸容器的API类图Set中元素无序,但是不能有重复的元素;List必须按照插入的顺序保存元素,元素可重复;Map存放成对的**“键值对”对象**,使用键来查找值Collection接口collection接口是存放一组对象的方法其中定义的方法有:int size()...
2019-01-14 22:33:09 188
原创 找第k小元素
1.分治法算法思想1.分解:使用Random Partition对数组array进行划分2.解决对主元素i分析,若i等于k,则返回该位置;若i<k,说明第k小元素落在数组的array[i+1 …n]之中,递归分析数组array[i+1 …n]的第k-i小元素;若i>k,说明第k小元素落在数组的array[0 …i-1]之中,递归分析数组array[0 …i-1]的第k小元素...
2019-01-14 21:20:05 1897
原创 java编程思想:复用类&多态
向上转型对某个对象的引用视为对其基类的引用适用场景:1.实参(子类对象)与形参(父类对象)结合的时候,把子类的引用视为父类的引用进行虚实结合。2.将子类的具体对象赋值给父类的引用 eg:Shape s=new Circle( );转机绑定:把一个方法调用与同一个方法主体关联起来前期绑定(静态绑定):在程序编译之前进行方法主体与具体方法的绑定后期绑定(动态绑定):在程序运行时...
2018-11-03 22:19:19 152
原创 计算第n个斐波那契数
斐波那契数列n>1,F(n)=F(n-1)+F(n-2);F(0)=0;F(1)=1;求第n个斐波那契数递归法利用已知的斐波那契数的递推公式即可在这里插入代码片动态规划递归法求解过程中,可知存在重复求解相同的函数值的情况,导致效率低下故利用一个数组存储函数值public class Fibonacci { public static int ...
2018-11-03 15:19:53 2336
原创 算法分析与设计——分治法&动态规划
分治法与动态规划分治法:将问题分解为规模逐渐减小的同类型的子问题 。但是子问题相互独立,不包含公共子问题动态规划:将问题分解为规模逐渐减小的同类型的子问题 。但是子问题具有重复性。优化原则:最优子结构性质问题的最优解中,每一个子问题本身即是该子问题的最优解即最优决策序列的任何子序列本身一定是相对于子序列的初始、结束状态的最优决策序列动态规划方法解题步骤找出最优解的性质,并刻画其结构...
2018-10-29 21:14:53 412
原创 算法设计分析——最大元、最小元(分治法)
算法思想:分解:将数组尽量均等分割解决:当n=2时,两数比较一次即可知最大元、最小元找出元素即可,无需合并。算法代码(java实现):import java.util.Arrays;public class MaxnumMinnum { public static void searchMaxMin(int[]arr,int mm[],int low,int h...
2018-10-25 22:15:52 2513
原创 算法设计与分析——快速排序(分治法)
算法思想:快速排序算法思想基于分治法思想之上,存在分解、解决这两步。分解:数组A[p…r]被划分为子数组A[p…q-1]和 A[q+1…r], A[p…q-1]中的每个元素都小于等于A[q],A[q+1…r]中的每个元素都大于等于A[q]q在划分时确定解决:通过递归调用快速排序算法,对子数组 A[q+1…r]和A[p…q-1]进行排序算法伪码:QUICKSORT(A,p,r)...
2018-10-22 22:18:42 2458
原创 c++ primer 学习笔记——函数的定义与声明
语句的声明与初始化声明语句:指出信息的存储位置和所需的内存空间 int carrots;还指出用变量carrots标识存储在该内存单元中的值。 声明意味着编译器会为变量分配内存空间。初始化:在声明变量的同时给函数赋值。int carrots=5;c++的int类型可为负值,大小取决于实际函数的 定义与声明用户定义的函数若定义在main函数之后,则必须在main函数之前声明。...
2018-10-17 13:29:18 281
原创 算法分析与设计——矩阵链乘(动态规划)
目标:求出矩阵连乘MMi+1┅Mj-1Mj(ij) 所需的最少乘法次数描述最优解结构递归地定义最优值(写出动态规划方程)以自底向上的递推方式计算出最优值 根据计算最优值时得到的信息,以递归方法构造一个最优解...
2018-10-15 21:22:05 957
原创 算法设计与分析——数据结构概念
算法特性有穷性(finite):算法的执行次数有穷,即它包含的计算步骤有穷。确定性(definite):每条指令都是明确的、无二义的 可行性(effective):每条指令都必须是能够执行的 输入(input):允许有0个或多个输入,取自特定的集合 输出(output):产生一个或多个输出, 与输入量有特定的关系计算过程与算法的区别在于,计算过程不具有穷性,是个死循环。算法...
2018-10-09 17:08:48 805
原创 java编程思想学习笔记:对象
概念 对象:状态(数据元素)+行为(方法)+标识(唯一的地址)。 类:描述相同的数据特性 +行为的对象的集合。可以将类看成一个数据类型。⇨⇨每个对象都是某个类(class)的一个实例⇨⇨在面对对象的设计方式中,程序是对象的集合。对象们通过发送消息来告知彼此所要做的。消息,即为对特定对象的方法的调用请求。 接口: 在软件工程中,泛指供别人调用的方法或者函数。每一个对象都...
2018-10-08 16:58:50 217
原创 算法设计与分析——合/归并排序
算法思想伪代码MERGE-SORT A[1…n]1.If n= 1, done.2.Recursively sort A[ 1 . . .n/2.]and A[ [n/2]+1 . . n ] . 3.“Merge” the 2 sorted lists.Key subroutine: MERGE算法复杂度若将归并算法的时间复杂度记为T(n)c1代价为1,c2代价为2T(n/...
2018-09-26 21:49:19 946
原创 算法设计与分析——插入排序
算法的定义 有穷性(finite):每条指令执行次数有穷性 确定性(define):每条指令的意思明确,无二义性 可行性(effictive):每条指令可执行,即人们用笔和纸做有限次运算也可完成 输入(input):0/1个输入 输出(output):1/n个输出,与输入量存在某种特定关系 算法复杂性分析时间复杂度 T(n) 时间复杂度即...
2018-09-19 22:05:22 894
原创 c++ primer 学习笔记——c++基础
c++和c语言的区别编程理念 C语言——结构化编程 利用自顶向下的设将程序分解成小型的任务,直到将程序划分成易于编写的模块,即函数 c++语言——面对对象的编程 利用oop设计方式,先设计类,准确表达程序需要处理的东西认识c++#include <iostream>//预处理器编译指
2018-09-07 17:49:35 216
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人