有序数组增删改查找
来源:互联网 发布:人工智能中文第四版pdf 编辑:程序博客网 时间:2024/06/03 09:28
public class MyOrderArray {
private long[] arr;
//表示有效数据的长度
private int elements;
public MyOrderArray() {
arr = new long[50];
}
public MyOrderArray(int maxsize) {
arr = new long[maxsize];
}
/**
* 添加数据 比如在2,4,5,6中插入3
*/
public void insert(long value) {
int i;
for(i = 0; i < elements; i++) {
if(arr[i] > value) {
break;
}
}
for(int j = elements; j > i; j--) {
arr[j] = arr[j - 1];
}
arr[i] = value;
elements++;
}
/**
* 显示数据
*/
public void display() {
System.out.print("[");
for(int i = 0; i < elements; i++) {
System.out.print(arr[i] + " ");
}
System.out.println("]");
}
/**
* 查找数据(线性查找,从头到尾查)
*/
public int search(long value) {
int i;
for(i = 0; i < elements; i++) {
if(value == arr[i]) {
break;
}
}
if(i == elements) {
return -1;
} else {
return i;
}
}
/**
* 二分法查找数据(前提是数组是有序的,先和中间数对比,若arr[middle] > value,说明该数据在左边,否则右边),左右查找
*/
public int binarySearch(long value) {
int middle = 0;
int low = 0;//左边最小数索引
int pow = elements;
while(true) {
middle = (pow + low) / 2;//中间数索引
if(arr[middle] == value) {
return middle;
} else if(low > pow) {
return -1;
} else {
if(arr[middle] > value) {
pow = middle - 1;
} else {
low = middle + 1;
}
}
}
}
/**
* 查找数据,根据索引来查
*/
public long get(int index) {
if(index >= elements || index < 0) {
throw new ArrayIndexOutOfBoundsException();
} else {
return arr[index];
}
}
/**
* 删除数据
*/
public void delete(int index) {
if(index >= elements || index < 0) {
throw new ArrayIndexOutOfBoundsException();
} else {
for(int i = index; i < elements; i++) {
arr[index] = arr[index + 1];
}
elements--;
}
}
/**
* 更新数据
*/
public void change(int index, int newvalue) {
if(index >= elements || index < 0) {
throw new ArrayIndexOutOfBoundsException();
} else {
arr[index] = newvalue;
}
}
}
private long[] arr;
//表示有效数据的长度
private int elements;
public MyOrderArray() {
arr = new long[50];
}
public MyOrderArray(int maxsize) {
arr = new long[maxsize];
}
/**
* 添加数据 比如在2,4,5,6中插入3
*/
public void insert(long value) {
int i;
for(i = 0; i < elements; i++) {
if(arr[i] > value) {
break;
}
}
for(int j = elements; j > i; j--) {
arr[j] = arr[j - 1];
}
arr[i] = value;
elements++;
}
/**
* 显示数据
*/
public void display() {
System.out.print("[");
for(int i = 0; i < elements; i++) {
System.out.print(arr[i] + " ");
}
System.out.println("]");
}
/**
* 查找数据(线性查找,从头到尾查)
*/
public int search(long value) {
int i;
for(i = 0; i < elements; i++) {
if(value == arr[i]) {
break;
}
}
if(i == elements) {
return -1;
} else {
return i;
}
}
/**
* 二分法查找数据(前提是数组是有序的,先和中间数对比,若arr[middle] > value,说明该数据在左边,否则右边),左右查找
*/
public int binarySearch(long value) {
int middle = 0;
int low = 0;//左边最小数索引
int pow = elements;
while(true) {
middle = (pow + low) / 2;//中间数索引
if(arr[middle] == value) {
return middle;
} else if(low > pow) {
return -1;
} else {
if(arr[middle] > value) {
pow = middle - 1;
} else {
low = middle + 1;
}
}
}
}
/**
* 查找数据,根据索引来查
*/
public long get(int index) {
if(index >= elements || index < 0) {
throw new ArrayIndexOutOfBoundsException();
} else {
return arr[index];
}
}
/**
* 删除数据
*/
public void delete(int index) {
if(index >= elements || index < 0) {
throw new ArrayIndexOutOfBoundsException();
} else {
for(int i = index; i < elements; i++) {
arr[index] = arr[index + 1];
}
elements--;
}
}
/**
* 更新数据
*/
public void change(int index, int newvalue) {
if(index >= elements || index < 0) {
throw new ArrayIndexOutOfBoundsException();
} else {
arr[index] = newvalue;
}
}
}
阅读全文
0 0
- 有序数组增删改查找
- 二分法查找有序数组
- 环有序数组查找
- 二维有序数组查找
- 二分法查找有序数组
- 有序数组的查找
- 二分法查找有序数组
- 循环有序数组查找
- 有序数组查找
- 有序数组的查找
- 有序数组\二分查找
- 二维有序数组查找
- 二维有序数组查找
- 有序数组二分查找
- javascript数组增删查改
- javascript数组增删改查
- 数组的增删改查
- MongoDB 数组元素增删改
- leetcode No150. Evaluate Reverse Polish Notation
- dbutils 介绍与使用
- Hibernate5的hibernate.cfg.xml基本配置
- Uva 933 Product of digits
- 熊猫TV技术与直播技术相关
- 有序数组增删改查找
- codevs 1198 NOIP 2012 国王的游戏 高精度 解题报告
- 再看Java泛型
- android 九宫格手势密码 纯代码实现
- static_cast、dynamic_cast、const_cast和reinterpret_cast总结
- 习题5-10 在Web中搜索(Searching the Web, UVa1597)
- BZOJ 3165: [Heoi2013]Segment 标记永久化
- Cordova环境搭建与创建工程
- 刚开始玩openMP,总结一下遇到的一点小问题。