无序数组
增:
public class ArrNoSortDemo {
private int[]arr = new int[20];
private int flag = 0;
//不考虑数组容量的增,不严谨
public void add(int x){
arr[flag] = x;
flag++;
}
public void adds(int x){
if(flag==arr.length){
int[] arrNew=new int[arr.length*2];
for (int i = 0;i<flag;i++){
arrNew[i]=arr[i];
}
arr=arrNew;
}
arr[flag]=x;
flag++;
}
}
查:
//查
public int getIndex(int x){
for (int i = 0;i<flag;i++){
if (x==arr[i]){
return i;
}
}
return -1;
}
改:
//改
public void change(int oldNum,int newNum){
int index = getIndex(oldNum);
arr[index]=newNum;
}
删除:
方法一:(不考虑重复的情况:)
方法二:
二分查找:
查找x,L指针指向数组开头,R指针指向数组末尾,C指针指向(L+R)/ 2
第一次遍历,如果x>c箭头所指的数,则保留C箭头右边的数据,L箭头指向C箭头的位置(x < c箭头所指的数,则保留C箭头左边的数据,R箭头指向C箭头的位置),C箭头指向此时L箭头和R箭头之和的一半,在和x对比,以此类推直到找到x
public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6,7,8,11,22};
getIndex(arr,4);
}
public static void getIndex(int[]arr,int x){
int left = 0;
int right= arr.length - 1;
while (left <= right){
int middle = (left+right)/2;
if(arr[middle] == x){
System.out.println("索引的位置是:"+middle);
return;
}else if(arr[middle]< x){
left = middle +1;
}else {
right = middle - 1;
}
}
System.out.println("查询失败");
}
画图演示:
以上是我学习了《数据结构》的无序数组的demo练习,从简单的做起,循序渐进!加油