数据结构---Java---有序数组
【自定义有序数组】
查找算法:
线性查找算法:依次对比查询;
二分查找算法:必须是有序;
insert:要插入的value与数组中每个元素进行比较,当有值>value时,此处的index之后的元素整体后移,index位置赋新值;

package com.exiuge.mytest.array;
public class MyOrderArray {
private long[] arr;
/**
* 实际数组元素大小
*/
private int elementsSize;
/**
* 初始容量50
*/
private static final int initSize=50;
public MyOrderArray(){
arr=new long[initSize];
}
/**
* insert
* @param value
*/
public void insert(long value){
if (elementsSize>=initSize){
throw new ArrayIndexOutOfBoundsException();
}
int i;
for (i=0;i<elementsSize;i++){
if (arr[i]>value){
break;
}
}
for (int j=elementsSize;j>i;j--){
arr[j]=arr[j-1];
}
arr[i]=value;
elementsSize++;
}
/**
* 展示全部
*/
public void display(){
System.out.println("[");
for (int i=0;i<elementsSize;i++){
System.out.print(arr[i]+" ");
}
System.out.println("]");
}
/**
* 根据value找下标索引
* @param value
* @return
*/
public int findByValue(long value){
int i;
for (i=0;i<elementsSize;i++){
if (arr[i]==value){
break;
}
}
if (i==elementsSize){
return -1;
}else {
return i;
}
}
/**
* 根据value找index(二分查找算法)
* @param value
* @return
*/
public int findByValueSec(long value){
int middle=0,start=0,end=elementsSize;
while (true){
middle=(start+end)/2;
if (arr[middle]==value){
return middle;
}else if (start>end){
return -1;
}else {
if (arr[middle]>value){
end=middle-1;
}else if (arr[middle]<value){
start=middle+1;
}
}
}
}
/**
* 根据下标索引找value
* @param index
* @return
*/
public long findByIndex(int index){
if (index>=elementsSize || index<0){
throw new ArrayIndexOutOfBoundsException();
}else {
return arr[index];
}
}
/**
* 根据下标索引删除value
* @param index
*/
public void deleteByIndex(int index){
if (index>=elementsSize || index<0){
throw new ArrayIndexOutOfBoundsException();
}else {
for (int i=index;i<elementsSize;i++){
arr[index]=arr[index+1];
}
elementsSize--;
}
}
/**
* 根据下标索引进行修改value
* @param index
* @param newValue
*/
public void updateByIndex(int index,long newValue){
if (index>=elementsSize || index<0){
throw new ArrayIndexOutOfBoundsException();
}else {
arr[index]=newValue;
}
}
}
数据结构---Java---有序数组的更多相关文章
- java 有序数组合并
有序数组合并,例如: 数组 A=[100, 89, 88, 67, 65, 34], B=[120, 110, 103, 79, 66, 35, 20] 合并后的结果 result=[120, 110 ...
- Java有序数组的实现
package 有序数组; public class OrdArray { private long[]array; private int nElems; //初始化 public OrdArray ...
- java有序数组的有序交集
public static void main(String[] args) throws ParseException { int[] a = {4,5,-1,-1}; int[] b = {-1, ...
- 《Java数据结构与算法》笔记-CH2有序数组
/** * 上个例子是无序数组,并且没有考虑重复元素的情况. * 下面来设计一个有序数组,我们设定不允许重复,这样提高查找的速度,但是降低了插入操作的速度. * 1.线性查找 * 2.二分查找 * 有 ...
- Java数据结构和算法 - 数组
Q: 数组的创建? A: Java中有两种数据类型,基本类型和对象类型,在许多编程语言中(甚至面向对象语言C++),数组也是基本类型.但在Java中把数组当做对象来看.因此在创建数组时,必须使用new ...
- (二)Java数据结构和算法——数组
一.数组的实现 上一篇博客我们介绍了一个数据结构必须具有以下基本功能: ①.如何插入一条新的数据项 ②.如何寻找某一特定的数据项 ③.如何删除某一特定的数据项 ④.如何迭代的访问各个数据项,以便进行显 ...
- Java的数组,集合,数据结构,算法(一)
本人的愚见,博客是自己积累对外的输出,在学习初期或自己没有多少底料的情况下,与其总结写博客不如默默去搞自己的代码,但是学到集合这一块时,数组,集合,数据结构,算法这个概念搞的我比较混淆,所以不得已写这 ...
- java合并两个有序数组的算法(抛砖引玉)
前几天看见一道面试题中要将两个有序数组合并成一个新的有序数组,首先使用了嵌套循环,之后想那样效率太低,又想出了以下思路,和大家分享下,如果有更好的方法,请留言指教: 思路: 1.新建一个数组大小为fi ...
- JAVA实现选择排序,插入排序,冒泡排序,以及两个有序数组的合并
一直到大四才开始写自己的第一篇博客,说来实在有点羞愧.今天写了关于排序的算法题,有插入排序,冒泡排序,选择排序,以下贴上用JAVA实现的代码: public class test5 { public ...
- 合并K个有序数组-Java
package com.rao.algorithm; import java.util.Arrays; /** * @author Srao * @className MergeK * @date 2 ...
随机推荐
- Linux下面的IO模型
1. Linux下的五种I/O模型 阻塞I/O模型: 一直阻塞 应用程序调用一个IO函数,导致应用程序阻塞,等待数据准备好. 如果数据没有准备好,一直等待….数据准备好了,从内核拷贝到用户空 ...
- 《Head First Servlets & JSP》-10-定制标记开发
标记文件:很想include,但是比include更好 建立和使用标记文件的最简方法 取一个被包含文件(如Header.jsp),把它重命名为带有一个.tag扩展名(Header.tag): 把标记文 ...
- js/jq基础(日常整理记录)-4-一个简单的自定义tree插件
一.一个简单的自定义tree插件 上一篇是之前自定义的table插件,这一篇也是之前同期尝试做的一个tree插件. 话不多说,先看看长什么样子哈! 现在来看确实不好看,以后在优化吧! 数据源:ajax ...
- 如何打开Assets.car文件
1.操作步骤 使用GitHub上的工具,下载也好,checkout也好都可以: 运行可知需要传入一个文件路径和解压后的文件输出路径: 选择Edit Scheme 大概看下源码可以知道,第一个是需要解压 ...
- 手把手教你如何制作和使用lib和dll_转载
目录 静态库 什么是静态库? 怎么创建 如何使用 静态库的第一种使用方法 静态库的第二种使用方法 动态链接库 动态库是什么? 怎么创建 如何使用 隐式调用 显式调用 静态库什么是静态库?我们先来说一下 ...
- A. Theatre Square(math)
A. Theatre Square time limit per test 1 second memory limit per test 256 megabytes input standard in ...
- (原创)Codeforces Round #550 (Div. 3) A Diverse Strings
A. Diverse Strings time limit per test 1 second memory limit per test 256 megabytes input standard i ...
- hdu1402(大数a*b&fft模板)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1402 题意: 给出两个长度1e5以内的大数a, b, 输出 a * b. 思路: fft模板 详情参 ...
- codevs3027(dp)
题目链接: http://codevs.cn/problem/3027/ 题意: 中文题目诶~ 思路: dp 先给所有线段按照右端点值升序 sort 一下, 用 dp[i] 存储以第 i 条线段结尾的 ...
- oracle数据库性能
性能视图V$开头 V$SYSTEM_EVENT 正在等待的资源的系统信息 V$SESSION_EVENT 会话累计发生的等待事件 V$SESSION_WAIT 会话正在等待或者曾经等待的详细时间信息 ...