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

相关推荐