package com.fu; import java.util.Arrays; /** * @auther 付强 * @date 2020/2/13 - 10:27 */public class myArray1 { //用于存储数据的数组 private int[] elements; public myArray1(){ elements=new int[0]; } //获取数组长度的方法 public int size(){ return elements.length; } //往数组的末尾添加一个元素 public void add(int element){ //创建一个新的数组 int[] newArr=new int[elements.length+1]; //把原数组中的元素复制到新的数组中 for (int i = 0; i < elements.length; i++) { newArr[i]=elements[i]; } //把添加的元素放入新数组中的 newArr[elements.length]=element; //使用新数组替换就数组 elements=newArr; } public void add(int index,int element){ //创建一个新的数组 int[] newArr=new int[elements.length+1]; //把原数组中的元素素质到新的数组中 for (int i = 0; i < elements.length; i++) { if(i<index){ newArr[i]=elements[i]; }else{ newArr[i+1]=elements[i]; } } newArr[index]=element; elements=newArr; } //打印所有元素到控制台 public void show(){ System.out.println(Arrays.toString(elements)); } //删除数组中的元素 public void delect(int index){ if(index<0||index>elements.length-1){ throw new RuntimeException("下标越界"); } //创建一个新数组 int newArr[]=new int[elements.length-1]; //把原先数组中的元素替换到新的数组中 for (int i = 0; i < elements.length; i++) { if(i<index){ newArr[i]=elements[i]; } else{ newArr[i]=elements[i+1]; } } elements=newArr; } //线性查找 public int search(int target){ for (int i = 0; i < elements.length; i++) { if(elements[i]==target){ return i; } } return -1; } //二分法查找 public int binarySearch(int target){ //设置一个中位数 //定义最小值 int min=0; //定义最大值 int max=elements.length-1; //索引 int index=-1; //什么情况下没有这个元素 //如果开始位置在结束位置之后或重合 if(min>=max){ return -1; } int mid=(max+min)/2; while(true){ if(elements[mid]==target){ return mid; } else{ if (elements[mid] > target) { max = mid - 1; } else{ min = mid + 1; } //取出中间的值 mid = (min + max) / 2; } } } }
原文地址:https://www.cnblogs.com/fuqiang-java/p/12303089.html
时间: 2024-10-03 03:58:59