package Array;

/**
* 对数组排序。当添加到阵列保持有序数组元素;
* @author wl
*
*/
public class MyOrderArray {
private long array[];
private int elements;//用于记录数组中实际数据的个数 public MyOrderArray(){
array=new long[50];//数组默认长度为50;
} public MyOrderArray(int capacity){//设置数组的默认长度
array=new long[capacity];
} /**
* 向数组中插入元素,并维护数组中元素的有序性
*/
public void add(long data){
if(elements>array.length-1){
throw new ArrayIndexOutOfBoundsException();
} int i;
for(i=0;i<elements;i++){
if(array[i]>data){
break;
}
} for(int j=elements;j>i;j--){
array[j]=array[j-1];
}
array[i]=data;
elements++;
} /**
* 删除index处的元素
* @param index
*/
public void delete(int index){
if(index>=array.length||index<0){
throw new IndexOutOfBoundsException();
}
for(int i=index;i<=elements;i++){
array[i]=array[i+1];
}
elements--;
} /**
* 删除元素data
* @param data
*/
public void delete(long data){
int addr=search(data);
if(addr==-1){
System.out.println(data+"不存在");
}else{
for(int i=addr;i<=elements;i++){
array[i]=array[i+1];
}
elements--;
}
} /**
* 用二分查找(折半查找)法查找数组中data的下标位置
* @param data
* @return
*/
public int binarySearch(long data){
int low,high,mid; low=0;
high=elements; while(low<=high){
mid=low+(high-low)/2; if(data<array[mid]){
high=mid-1;
}else if(data>array[mid]){
low=mid+1;
}else{
return mid;
}
}
return -1;
}
/**
* 查找index处的元素
* @param index
* @return
*/
public long search(int index){
if(index>=array.length||index<0){
throw new IndexOutOfBoundsException();
}
return array[index];
} /**
* 查找array中data值所在下标
* @param data
* @return
*/
public int search(long data){
int i;
for(i=0;i<=elements;i++){
if(array[i]==data){
return i;
}
}
return -1;
} /**
* 打印数组中的内容
*/
public void display(){
System.out.print("[");
for(int i=0;i<elements-1;i++){
System.out.print(array[i]+",");
}
System.out.print(array[elements-1]);
System.out.println("]");
}
}

java数据结构系列——排列(2):有序阵列的更多相关文章

  1. JAVA数据结构系列 栈

    java数据结构系列之栈 手写栈 1.利用链表做出栈,因为栈的特殊,插入删除操作都是在栈顶进行,链表不用担心栈的长度,所以链表再合适不过了,非常好用,不过它在插入和删除元素的时候,速度比数组栈慢,因为 ...

  2. Java数据结构系列之——栈(2):栈的链式存储结构及其操作

    package Stack; import LinkList.SinglyLinkList; public class LinkListStack { private SinglyLinkList&l ...

  3. java数据结构系列之——数组(1)

    import javax.management.RuntimeErrorException; public class MyArray { private long array[]; private ...

  4. Java数据结构系列——简单排序:泡、选择、直接进入

    package SimpleSort; public class SimpleSort { /** * 冒泡排序:每次循环过程中.小的排在后面的数会像水中的 * 气泡一样慢慢往上冒,所以命名为冒泡排序 ...

  5. Java数据结构系列(1)——自平衡二叉树

    1.基本概念 所谓自平衡二叉树,就是当我们插入或删除元素之后,二叉树的高度会自动调整到最小,这样我们就可以在对数时间内查找二叉树内的元素. 2.定义 TreeSet<Elemtype> s ...

  6. 自己动手实现java数据结构(一) 向量

    1.向量介绍 计算机程序主要运行在内存中,而内存在逻辑上可以被看做是连续的地址.为了充分利用这一特性,在主流的编程语言中都存在一种底层的被称为数组(Array)的数据结构与之对应.在使用数组时需要事先 ...

  7. 《java数据结构与算法》系列之“开篇”

    大学的时候学习数据结构,当时吧虽然没挂这门课,但是确实学的不咋地,再但是其实自己一直都觉得数据结构很重要,是基础,只有基础好了,后面的路才能走的更好. 懒惰真的是天下的罪恶之源.所以一直到现在都毕业了 ...

  8. Java 集合系列 17 TreeSet

    java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...

  9. Java 集合系列 12 TreeMap

    java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...

随机推荐

  1. Ising模型(伊辛模型)

    Ising模型(伊辛模型)是一个最简单且能够提供非常丰富的物理内容的模型.可用于描写叙述非常多物理现象,如:合金中的有序-无序转变.液氦到超流态的转变.液体的冻结与蒸发.玻璃物质的性质.森林火灾.城市 ...

  2. android 4.0 中出错 java.lang.UnsupportedOperationException

    在android4.0中  画图的时候使用: canvas.clipPath(path, Region.Op.XOR); 报错 java.lang.UnsupportedOperationExcept ...

  3. (转)FFMPEG解码流程

    http://www.douban.com/note/228831821/ FFMPEG解码流程:     1. 注册所有容器格式和CODEC: av_register_all()     2. 打开 ...

  4. zookeeper错误KeeperErrorCode = ConnectionLoss解决

    原因: 一般是由于连接还未完成就执行zookeeper的get/create/exsit操作引起的. 解决方法: 利用"CountDownLatch 类 + zookeeper的watche ...

  5. 【LeetCode】Triangle 解决报告

    [称号] Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjac ...

  6. GCD code block

    在这里积累一些片段,由于备忘录. + (DRClass *)sharedDR{ //创建小黑.正常ap模式仅仅有一个小黑,so static DRClass *aDR = nil; static di ...

  7. fullcalendar日历控件集合知识

    1.基本的语法: 首先,fullcalendar和JQUERY一样,以面向对象的方式来组织代码.当然,这里的面向对象不过指能够把整个fullcalendar理解为一个类,这个类里包含有非常多的属性.方 ...

  8. [MSSQL]最小公约数

    [摘要]一个朋友在展BOM的时候有这种需求,两列字段(数值):A ,B   A=用量,B=底数,组成用量=用量/底数.A/B,若能被整除,显示整除的结果,若不能整除显示分数形式A/B(分数形式要是约分 ...

  9. [Unity3D]脚本中Start()和Awake()的差别

    Unity3D刚開始学习的人常常把Awake和Start混淆. 简单说明一下,Awake在MonoBehavior创建后就立马调用,Start将在MonoBehavior创建后在该帧Update之前. ...

  10. Asp.NET MVC3 使用 SignalR 实现推(持续)

    一,Persistent Connection 演示示例教程 1.实现server端代码 1),编写server PersistentConnection 代码 项目中 SignalR 文件夹下创建 ...