复制该代码能够在idea中正常运行!!!!!!!!!!!!!
数组的增删查,有序列表,看起来较为简单,但都需要思考。
但是删除的时候后边的数据赋值予前一个单位,最后一个单位还是存在的,
插入的时候也有些不一样,是从后面开始往前赋值的。
public class Array_demo {
/**
* 查找一个元素
* @param arr 数组
* @param size 数组已存元素大小
* @param key 要查询的元素
*/
public static void search(int[] arr,int size,int key){
int index = -1;
for (int i = 0; i < size; i++) {
arr[i] = key;
index = i;
}
System.out.println("该元素存储在第"+(index+1)+"的位置");
}
/**
* 删除一个元素
* @param arr 数组
* @param size 数组已存在元素大小
* @param key 要删除的元素
*/
public static void delete(int[] arr,int size,int key){
int index = -1;
for (int i = 0; i < size; i++) {
if (arr[i] == key){
index = i;
}
}
if (index != -1){
for (int i = index+1; i < size; i++) {
arr[i-1] = arr[i];
}
}
System.out.println(Arrays.toString(arr));
}
/**
* 插入元素
* @param arr 数组
* @param size 存储元素个数
* @param a 插入位置
* @param element 元素
*/
public static void add(int[] arr,int size,int a,int element){
if (arr.length <= size){
System.out.println("范围不对");
return;
}
for (int i = size; a < i ; i--) {
arr[i] = arr[i-1];
}
arr[a] = element;
}
/**
* 合并两个有序数组
* @param arr 数组1
* @param size 数组1的填充元素个数
* @param arr1 数组2
* @param size1 数组2的填充元素个数
*/
public static void merge(int[] arr, int size ,int[] arr1, int size1){
//新建一个数组来进行接受两个数组
int[] c = new int[size+size1];
int i = 0,j = 0,k = 0;
//循环条件
while (true) {
if (i >= size){
//i的结束了,就链接j剩下的
System.arraycopy(arr1,j,c,k,size1-j);
System.out.println(Arrays.toString(c));
return;
}
if (j>=size1){
//j的结束了,就链接i剩下的
System.arraycopy(arr,i,c,k,size-i);
System.out.println(Arrays.toString(c));
return;
}
//进行有序比较,添加进新的数组
if (arr[i] > arr1[j]) {
c[k] = arr1[j];
++j;
++k;
} else {
c[k] = arr[i];
++i;
++k;
}
}
}
public static void main(String[] args) {
int[] b = new int[10];
b[0] = 1;
b[1] = 2;
b[2] = 3;
int[] a = {1,1,1,5,7,9};
int[] c = {1,2,3};
// search(a,7,3);
delete(a,4,11);
// System.out.println(Arrays.toString(a));
add(b,3,3,5);
System.out.println(Arrays.toString(b));
merge(a,4,c,3);
}
}