java数据结构系列——排列(2):有序阵列
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):有序阵列的更多相关文章
- JAVA数据结构系列 栈
java数据结构系列之栈 手写栈 1.利用链表做出栈,因为栈的特殊,插入删除操作都是在栈顶进行,链表不用担心栈的长度,所以链表再合适不过了,非常好用,不过它在插入和删除元素的时候,速度比数组栈慢,因为 ...
- Java数据结构系列之——栈(2):栈的链式存储结构及其操作
package Stack; import LinkList.SinglyLinkList; public class LinkListStack { private SinglyLinkList&l ...
- java数据结构系列之——数组(1)
import javax.management.RuntimeErrorException; public class MyArray { private long array[]; private ...
- Java数据结构系列——简单排序:泡、选择、直接进入
package SimpleSort; public class SimpleSort { /** * 冒泡排序:每次循环过程中.小的排在后面的数会像水中的 * 气泡一样慢慢往上冒,所以命名为冒泡排序 ...
- Java数据结构系列(1)——自平衡二叉树
1.基本概念 所谓自平衡二叉树,就是当我们插入或删除元素之后,二叉树的高度会自动调整到最小,这样我们就可以在对数时间内查找二叉树内的元素. 2.定义 TreeSet<Elemtype> s ...
- 自己动手实现java数据结构(一) 向量
1.向量介绍 计算机程序主要运行在内存中,而内存在逻辑上可以被看做是连续的地址.为了充分利用这一特性,在主流的编程语言中都存在一种底层的被称为数组(Array)的数据结构与之对应.在使用数组时需要事先 ...
- 《java数据结构与算法》系列之“开篇”
大学的时候学习数据结构,当时吧虽然没挂这门课,但是确实学的不咋地,再但是其实自己一直都觉得数据结构很重要,是基础,只有基础好了,后面的路才能走的更好. 懒惰真的是天下的罪恶之源.所以一直到现在都毕业了 ...
- Java 集合系列 17 TreeSet
java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...
- Java 集合系列 12 TreeMap
java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...
随机推荐
- 基于Cocos2dx开发卡牌游戏_松开,这三个国家
1.它实现了动态读取地图资源.地图信息被记录excel桌格.假设你想添加地图,编者excel导入后CocoStudio数据编辑器,然后出口到Json档,到项目的Resource文件夹下. 2.SGFi ...
- Test SRM Level One: TemperatureScales
题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=6038 因为TopCoder SRM比赛使用的编译器进行了升级, ...
- 点击 下载 pdf
<iframe id="fileDownFrame" src="" style="display:none; visibility:hidde ...
- openstack dhcp调试
openstack的dhcpserver默认值dnsmasq软件实施,经ps -ef | grep dnsmasq 查看.当虚拟机启动过程启动dhcp求,日志可以是在主机系统日志: May 23 22 ...
- ubuntu12.04硬盘安装
ubuntu12.04发布了 , 安装又是一个话题.安装系统有很多方法,比如livecd,和u盘,但这些都需借用外部设备,所以硬盘安装是最好不过的方法了.u盘,cd安装都非常的简 单,对于那些讨厌用光 ...
- 检验身份证的正确性(C语言版本)
/* check id_card * write by sndnvaps<sndnvaps@gmail.com> * ai -> a1 , a2, a3, a4, a5, a6... ...
- 写一个程序,乞讨1+2*2+3*3+n*n值 Java
public static void main(String[] args) { // 1*1+2*2+3*3+n*n int n = 40; // 1 ...
- ueditor文本编辑器的使用
1,头部引用 <link href="ueditor/themes/default/css/ueditor.css" rel="stylesheet" t ...
- 【Linux探索之旅】第二部分第三课:文件和目录,组织不会亏待你
内容简介 1.第二部分第三课:文件和目录,组织不会亏待你 2.第二部分第四课预告:文件操纵,鼓掌之中 文件和目录,组织不会亏待你 上一次课我们讲了命令行,这将成为伴随我们接下来整个Linux课程的一个 ...
- Linux C编程语言学习材料
C语言作为最基础的编程语言,30年虚弱的患病率. 无论是准备做 PHP/Java/Python/Golang 开发学习.C语言都是基础的,我们非常多基础非常小的互联网执行的开源软件服务都是C语言构筑, ...