技术标签: java java数据结构学习 数据结构
数组首先本身就是一个数据结构,在Java中ArrayList就是一个基于数组而实现的非常好用的工具,这里我就是对数组实现了一些简单的封装,让我们的数组拥有了一些简单的增删改查的功能。
源码贴出~
package com.array;
/**
* java数据结构与算法----数组
* 数组本身就是一种数据结构,这里是对数组的简单封装
* @author **
*
*/
public class Array {
private int[] arr ;
private int index=0;
private int allsize=0;//定义数组大小
/**
* 构造方法初始化数组
* @param size 数组的大小
*/
public Array(int size) {
allsize=size;
arr= new int[allsize];
}
/**
* 插入一条数据
* @param data 数据值
*/
public void insert(int data){
arr[index]=data;
index++;//每当插入一条数据之后就让下标加一
}
/**
* 查找某个值对应的索引
* @param val 值
* @return i 索引,返回-1代表没找到
*
*/
public int find(int val){
// 顺序查找,若想采用二分查找则数组必须是有序的
for (int i = 0; i < getSize(); i++) {
if(arr[i]==val)
return i;
}
return -1;
}
/**
* 删除指定的值
* @param val 需要删除的值
* @return 是否删除成功
*/
public boolean deleteVal(int val){
boolean f=false;
int index=find(val);
if(index==-1)
return f;
else{
for (int i = index; i < arr.length-1; i++) {
arr[i]=arr[i+1];
}
allsize=arr.length-1;//删除之后数组的实际大小并没有变化,这里定义一个allsize让大小看起来变小了
f=true;
}
return f;
}
/**
*删除下标索引对应的数组元素
* @param index 下表索引
* @return 是否删除成功
*/
public boolean deleteIndex(int index){
boolean f=false;
if(index<0||index>=getSize())
return f;
else{
for (int i = index; i < arr.length-1; i++) {
arr[i]=arr[i+1];
}
allsize=allsize-1;//删除之后数组的实际大小并没有变化,这里定义一个allsize让大小看起来变小了
f=true;
}
return f;
}
/**
* 返回一个看起来变化了的大小
* @return
*/
public int getSize(){
return allsize;
}
/**
* 接受索引号和值进行修改
* @param index 索引号
* @param val 值
* @return 是否修改成功
*/
public boolean update(int index,int val){
boolean f =false;
if(index>=0&&index<getSize()){
arr[index]=val;
}
return f;
}
/**
* 打印全部数据
*/
public void viewAll(){
for (int i = 0; i <getSize(); i++) {
System.out.print(arr[i]+" ");
}
}
public static void main(String[] args) {
Array a = new Array(10);
for(int i=0;i<10;i++)
a.insert(i);
a.deleteVal(5);
a.deleteIndex(5);
a.update(2, 15);
System.out.println(a.find(9));
a.viewAll();
}
}
【代码】STM32CubeMX-串口通讯。
今天把android内核交叉编译后移植到我的2440开发板,下面是一些心得。 1、从http://code.google.com/p/android/downloads/list上下载linux-2.6.25-android-1.0_r1.tar.gz 2、解压到任意目录下,解压命令为tar tar –zxvf linux-2.6.25-android-1.0_r1.tar.gz。 3、解压2440板的交叉编译工具arm-linux-gcc-3.4.1.tar.bz2命令为tar xjvf arm-linu
在使用 python-paho-mqtt 开发客户端的时候,有时候会遇到mqtt客户端断开后无法重连的问题,如果你的客户端是使用 loop_start() 运行的,可能遇到了跟我同样的问题。分析paho.mqtt.client 中使用 loop_forever() 是阻塞式的自动处理收发数据的,所有的数据处理逻辑都在预先设定好的回调函数中进行的,如果不想阻塞主进程可以使用loop_start() 在子进程中运行loop_forever() 。执行loop_start() 后,如果不主动断开与brok
Hello World程序长期以来, 编程界都认为刚接触一门新语言时, 首先使用它来编写一个在屏幕上显示消息“Hello world!”的程序, 将给你带来好运。要使用Python来编写这种Hello World程序, 只需一行代码:print(“Hello world!”)这种程序虽然简单, 却有其用途: 如果它能够在你的系统上正确地运行, 你编写的任何Python程序都将如此。 稍后将介绍如何在特定的系统中编写这样的程序。注释本章目标了解注释的作用掌握单行注释(行注释)掌握多行注释(
BunyanBunyan(by Trent Mick)是另外一个值得考虑的日志框架,以略微不同的方式处理结构化,机器可读性被重点对待。其结果是,bunyan每行日志记录实际上就是JSON.stringify的一个输出。安装(Installation)npm install bunyan使用(Usage)var bunyan= require('bunyan');var log=bunyan.cre...
目录介绍MM的思想MM过程总结引用介绍MM优化更多地来讲是一种思想,并不特指某种算法,依靠这种思想可以衍生出很多优化算法。我本人并非数学专业人士,最优传输的求解中用到了MM优化算法,所以特意了解并记录了一下,内容浅显,仅涉及皮毛。本文参考了其他博客的相关内容并整理在本文中,后面会附上相关连接,侵删。MM的思想MM算法的思想是这样的:简单来说,就是我想求解某个目标函数JJJ的最小值,但是比较难算,那么我可以新构造一个好求解的目标函数GGG,在满足一定条件的前提下,不断求解GGG的最小值,
Unity3D 原生WebCamera实现摄像头显示 原创 2017年02月15日 12:03:22 <ul class="article_tags clearfix cs
问题描述广义背包问题的描述如下:给定载重量为M的背包和n种物品,每种物品有一定的重量和价值,现在需要设计算法,在不超过背包载重量的前提下,巧妙选择物品,使得装入背包的物品的总价值最大化。规则是,每种物品均可装入背包多次或不装入(但不能仅装入物品的一部分)。符号描述递推公式算法实现以及时空复杂度function GKP(M, m, v) { var n = m.l...
例如话题为/topic1首先source devel/setup.bashrostopic echo /topic1 | grep id: -w > result.txt这句话的意思是分解来看rostopic echo /topic1 是打印话题/topic1的结果grep id: -w 查找关键词 id: -w表示只显示全字符合的列。> result.tx 把符合结果的信息保存到 result.txt文件中。...
UITableViewCell上的按钮点击事件处理
某公司员工的工资计算方法如下:一周内工作时间不超过40小时,按正常工作时间计酬;超出40小时的工作时间部分,按正常工作时间报酬的1.5倍计酬。员工按进公司时间分为新职工和老职工,进公司不少于5年的员工为老职工,5年以下的为新职工。新职工的正常工资为30元/小时,老职工的正常工资为50元/小时。请按该计酬方式计算员工的工资。
1 安装前的准备准备工作要用登录为root用户来进行。1.1 选择安装环境的语言Oracle安装时可以通过环境变量LANG指定安装语言,如果Linux命令行不能显示中文,就要将语言环境设置为英语。例如:export LANG=en_US.UTF-81.2 修改gennttabOracle 10g在一些Linux系统下安装可能会被中断,在安装日志文件$OR...