java 算法(1)-有序数组

public class OrderArray {
    // 数组
    private long [] arr;
    // 数组中有效数据的大小
    private int elems;

    public OrderArray(){
        arr=new long[50];

    }
    public OrderArray(int max) {
        arr = new long[max];
    }

    /**
     * 插入数据
     * @param value
     */
    public void insert(long value){
        int i=0;
        for(i=0;i<elems;i++){
            if(arr[i]>value){

                break;
            }
        }
        for(int j=elems;j>i;j--){
             arr[j]=arr[j-1];
        }
        arr[i]=value;
        elems++;
     }

    // 显示数据
    public void display() {
        for (int i = 0; i < elems; i++) {
            System.out.print(arr[i] + " ");
        }
        System.out.println();
    }

    /**
     * 查找下标
     * @param searchKey
     * @return
     */
    public  int findIndex(long searchKey){
        int i;
        for(i=0;i<elems;i++){
            if(arr[i]==searchKey){
                break;
            }
        }
        if(i==arr.length){
            return  -1;
        }
        else {
            return i;
        }
    }

    /**
     * 二分法查找
     * @param searchKey
     * @return
     */
    public int binaryFindIndex(long searchKey){
        int ins=0;//中间值
        int low=0;//下标
        int pow=elems;//上标
        while(true){
            ins=(low+pow)/2;
            if(arr[ins]==searchKey){
                return  ins;
            }else if(low>pow){
                return  -1;
            }else{
                if(arr[ins]>searchKey){
                    pow=ins-1;
                }else{
                    low=ins+1;
                }
            }
        }

    }

    public void delet(long deleteKey){
        if(binaryFindIndex(deleteKey)==-1){
            System.out.println("查找不到指定数据,删除失败");
        }else{

            for(int i=binaryFindIndex(deleteKey);i<elems;i++){
                arr[i]=arr[i+1];
            }
        }
    }
    // 修改数据
    public void change(long oddValue, long newValue) {
        if(binaryFindIndex(oddValue) == -1) {
            System.out.println("查找不到指定数据,修改失败");
        } else {
            arr[binaryFindIndex(oddValue)] = newValue;
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值