以下方法在使用时需要new一个新对象调用,输出时需要一个输出方法,否则输出的是地址
1.最后位置插入
java
//最后位置插入
public void add(int element){
if (size>=arr.length){
capacity*=factor;
int[] temp=new int[capacity];
for (int i = 0; i <arr.length ; i++) {
temp[i]=arr[i];
}
arr=temp;
}
arr[size]=element;
size++;
}
2.任意位置插入
java
//在任意位置插入
//value 插入的值
//index 插入的位置
public void insert(int value,int index){
if (index<0||index>size){
System.out.println("插入位置不合理");
return;
}
if (size== arr.length){
//扩容
capacity*=factor;
int[] temp=new int[capacity];
for (int i = 0; i <arr.length ; i++) {
temp[i]=arr[i];
}
arr=temp;
}
//插入位置以及插入位置以后的数据往后移动
for (int i =size-1; i >=index ; i--) {
arr[i+1]=arr[i];
}
//插入数据
arr[index]=value;
size++;
}
3.删除第一个复合条件的元素
java
//删除第一个复合条件的数据
public boolean delFirst(int value){
boolean isFound=false;
for (int i = 0; i < size ; i++) {
if(arr[i]==value){
//删除
for (int j = i; j <size-1 ; j++) {
arr[j]=arr[j+1];
}
size--;
isFound=true;
break;
}
}
return isFound;
}
4.删除所有复合条件的元素
java
//删除所有复合条件的数据
public boolean delete(int value){
boolean isFound=false;
//从后往前遍历可以删除两个相邻的复合条件的数据
for (int i = size-1; i >=0 ; i--) {
if(arr[i]==value){
//删除
for (int j = i; j <size-1 ; j++) {
arr[j]=arr[j+1];
}
size--;
isFound=true;
}
}
return isFound;
}
5.在合适位置插入
java
//在合适位置插入
public void orderInsert(int value){
if (size== arr.length){
//扩容
capacity*=factor;
int[] temp=new int[capacity];
for (int i = 0; i <arr.length ; i++) {
temp[i]=arr[i];
}
arr=temp;
}
//插入
if(size==0){
arr[0]=value;
}else if(value>arr[size-1]){
arr[size]=value;
}else {
for (int i = 0; i <size ; i++) {
if(arr[i]>value){
//插入位置以及之后的数据往后移动
for (int temp=size-1;temp>=i;temp--){
arr[temp+1]=arr[temp];
}
arr[i]=value;
break;
}
}
}
size++;
}
6.二分查找
java
//二分查找
public int search(int value){
int left=0;
int right=size;
while (left<=right){
int mid=(left+right)/2;
if(arr[mid]==value){
System.out.println("找到了,下标为"+mid);
return mid;
}else if(arr[mid]>value){
right=mid-1;
}else {
left=mid+1;
}
}
System.out.println("没找到");
return -1;
}