package com.wwy.sf;
import java.util.Arrays;
public class SuanFa {
private int index;
public static void addArr(int target) {
//给数组增加一个元素
/*
思路:1,定义一个数组arr1 ;
2,通过参数新增目标元素;
3,定义一个新数组arr2;
4,将原来数组arr1的值赋值给新数组arr2;
5,将目标值target附给新数组最后一个元素
6,将新数组附给旧数组
*/
int[] arr1 = new int[]{2,4,5,76,7,3,1};
int[] arr2 = new int[arr1.length+1];
for (int i = 0; i <arr1.length ; i++) {
arr2[i] = arr1[i];
}
arr2[arr1.length] = target;
arr1 = arr2;
System.out.println(Arrays.toString(arr1));
}
//删除数组中的一个元素
/*
思路:1,定义一个数组arr1;
2,通过参数传人需要删除的目标元素;
3,定义一个新数组arr2;
4,将原来数组arr1的值赋值给新数组arr2,注意,目标下标前的元素直接附给,目标后的,下标需要减一操作;
6,将新数组附给旧数组
*/
public static void delarr(int index) {
//目标数组,要删除的元素的下标index
int[] arr1 = new int[]{2,4,5,76,7,3,1};
//创建一个新的数组,长度是原数组的长度-1
int [] arr2 = new int[arr1.length-1];
//复制原数组中除了要删除的那个元素以外其它的元素给新数组
for (int i = 0; i <arr2.length; i++) {
if (index < i||index == i){
arr2[i] = arr1[i+1];
}else {
arr2[i] = arr1[i];
}
}
arr1 = arr2;
System.out.println(Arrays.toString(arr1));
}
//数组的改,更改下标的下标index,改变后的值value
public static void update(int index,int value) {
int[] arr = new int[]{2,4,5,76,7,3,1};
arr[index] = value;
System.out.println(Arrays.toString(arr));
}
//线性查找 目标元素target
public static void search(int target) {
//定义一个数组
int[] arr = new int[]{1, 2, 5, 6, 7, 8,4};
for (int i = 0; i <arr.length ; i++) {
if (arr[i] == target){
System.out.println(i);
}else {
if (i == arr.length -1){
System.out.println("查找的元素不存在!");
}
}
}
}
//二分法查找,目标元素target,条件:里面的元素按升序排序
public static int binarysearch(int target) {
//定义一个数组
int[] arr = new int[]{1, 2, 3, 4, 5, 6, 7, 8};
//开始位置
int start = 0;
//结束位置
int end = arr.length - 1;
int mid = (start + end) / 2;
//目标位置下标
int index = -1;
while (start < end) {
if (target == arr[mid]) {
index = mid;
break;
} else {
if (target > arr[mid]) {
start = mid + 1;
} else {
end = mid - 1;
}
mid = (start + end) / 2;
}
}
return index;
}
public static void main(String[] args) {
addArr(8);
delarr(0);
search(10);
int index = binarysearch(6);
System.out.println("查找的元素的下标为:"+index);
update(2,13);
}
}
运行结果
[2, 4, 5, 76, 7, 3, 1, 8]
[4, 5, 76, 7, 3, 1]
查找的元素不存在!
查找的元素的下标为:5
[2, 4, 13, 76, 7, 3, 1]