Java 算法 — 数组的增删改查
原创
©著作权归作者所有:来自51CTO博客作者咸咸瑜瑜的原创作品,请联系作者获取转载授权,否则将追究法律责任
前置条件: elements 是 数组的长度。
增:
public void insert(long value) {
arr[elements++] = value;
}
其中elements 在这个 类 初始化 是 0 而且 前提是 arr 是有不是null,不然空指针异常。
顺序查找:
1.顺序查找,,根据值查找 返回下标:
/**
* 查找数据
*/
public int search(long value) {
int i;
for(i = 0; i < elements; i++) {
if(value == arr[i]) {
break;
}
}
if(i == elements) {
//没找到
return -1;
} else {
//找到返回i
return i;
}
}
2,顺序查找 , 根据下标查找 返回值:
public long getValue(int index){
if (index >= elements || elements < 0){
throw new ArrayIndexOutOfBoundsException();
}else{
return arr[index];
}
}
3. 二分法查找,根据 值 查找,返回 下标:
注意! 二分法仅适用于 有序数组【递增 、 递减】,下面是递增版。 【 一般考试那些教材 都写明一定得是 递增 】
二分法 - 有序递增
删:
1.根据index 删
思路: index 以后的 都 = arr[index + 1],,
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--;
}
}
改:
根据下标更新数据:
思路: arr[下标] = newValue
/**
* 更新数据
*/
public void change(int index, int newvalue) {
if (index >= elements || index < 0) {
throw new ArrayIndexOutOfBoundsException();
} else {
arr[index] = newvalue;
}
}
}
本文来自博客园,作者:咸瑜,转载请注明原文链接:javascript:void(0)p/15515584.html