java数据结构-排序算法-前边算法整合

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;
}
}
}

}
posted @ 2020-02-13 12:16  1350464730  阅读(144)  评论(0编辑  收藏  举报