下面是一个简单的数组 增 删 改 查 的功能;
package arrays;
import java.util.Arrays;
public class Select {
public static void main(String[] args) {
int[] arr = new int[] { 12, 23, 34, 45, 56, 67, 78, 89, 90 };
System.out.println("原始数组:"+Arrays.toString(arr));
search(arr, 23);
System.out.println("查找23的值的下标:"+search(arr, 23));
System.out.println("删除数组arr中12");
//删除数组arr中12
delect(arr,12);
System.out.println(Arrays.toString(arr));
System.out.println("在删除掉基础上,将下标为3的值修改为11");
//在删除掉基础上,将下标为3的值修改为11
update(arr, 3, 11);
System.out.println(Arrays.toString(arr));
System.out.println("在修改的基础上,在下表为5的位置上增加值1");
//在修改的基础上,在下表为5的位置上增加值1
add(arr, 5, 1);
System.out.println(Arrays.toString(arr));
}
// 二分法查找
public static int search(int[] a, int key) {
// 最左边的数的下标
int left = 0;
// 最右边的数的下标
int right = a.length - 1;
while (left <= right) {
int mid = (left + right) / 2;// 中间数的下标
if (key < a[mid]) {
right = mid - 1;
} else if (key > a[mid]) {
left = mid + 1;
} else {
return mid;
}
}
return -1;
}
// 删除数组的某个元素
public static void delect(int[] a, int data) {
// 先查询你要删除的元素的下标
for (int i = 0; i < a.length; i++) {
if (a[i] == data) {
// 加入删除的下标为2,加下标3的值赋给2,下标为4赋给3,以此类推(这是数组删除的概念),
for (int j = i; j < a.length - 1; j++) {
a[j] = a[j + 1];
}
// 将最后的数设置为0
a[a.length - 1] = 0;
}
break;
}
}
//修改某个元素的值
public static void update(int[] a, int i, int data) {
a[i] = data;
}
//添加某个元素
public static void add(int[] a,int b,int data) {
for(int i =a.length-1;i>b;i--) {
a[i] = a[i-1];
}
a[b] = data;
}
}
上面代码的执行结果: