欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数据结构-数组

程序员文章站 2024-02-24 17:30:34
...

使用数组进行练习,涉及增删改查,按下标查询,按二分法进行查询

package com.lyz.dataStructure.array;

/**
 *@Author:[email protected] Lyz
 *@Date: 2019/3/28 15:01
 *@Description:
 **/
/*
数据结构 第一节  数组
 */
public class ArrayDemo {

    private int[] arr;

    //表示有效数据的长度
    private int elements;

    public ArrayDemo(){
        arr = new int[50];
    }

    /*

     */
    public ArrayDemo(int maxsize){
         arr = new int[maxsize];
    }

    /*
    添加数据
     */
    public void insert(int value){
        arr[elements]=value;
        elements++;
    }

    /*
    添加数组排序
     */
    public void insert1(int value){
        int i ;
        for(i =0;i<elements;i++) {
            if (arr[i] > value) {
                break;
            }
        }
        for(int j=elements;j>i;j--){
                arr[j] = arr[j-1];
        }
            arr[i] =value;
            elements++;
        }

        /*
        使用二分法查找有序数组的下标
         */
        public int ErFenSearch(int value){
            int lower = 0;
            int middle ;
            int power = elements;
            while(true){
                middle = (lower+power)/2;
                if(arr[middle]==value){
                    return  middle;
                }else if(lower>value){
                    return -1;
                }else{
                    if(arr[middle]>value){
                        power = middle -1;
                    }else{
                        lower = middle + 1;
                    }
                }
            }
        }


    /*
    打印
     */
    public void  print(){
        System.out.print("[");
        for(int i=0;i<elements;i++){
            System.out.print(arr[i] +" ");
        }
        System.out.println("]");
    }
    /*
    查询值
     */
    public int  search(int value){
        int i;
        for(i=0;i<elements;i++){
            if(value==arr[i]){
                break;
            }
        }
        if(i == elements){
            return -1;
        }else {
            return 1;
        }
    }
    /*
    查询下标
     */
    public int get(int index){
        if(index>=elements || index< 0){
            throw  new ArrayIndexOutOfBoundsException();
        }else{
           return  arr[index];
        }
    }

    /*
    删除下标
     */
    public void delete(int index){
        if(index>=elements || index< 0){
            throw  new ArrayIndexOutOfBoundsException();
        }else{
           for(int i =index;i<elements;i++){
               arr[index] = arr[index+1];
           }
           elements--;
        }
    }

    /*
    更新数据
     */
    public void  update(int index,int newValue){
        if(index>=elements || index< 0){
            throw  new ArrayIndexOutOfBoundsException();
        }else{
            arr[index] = newValue;
        }
    }


}

测试类

package com.lyz.dataStructure.array;

/**
 *@Author:[email protected] Lyz
 *@Date: 2019/3/28 15:16
 *@Description:
 **/
public class TestArrayDemo {

    public static void main(String[] args) {

        ArrayDemo arrayDemo = new ArrayDemo();
        //打印数据
     /*   arrayDemo.print();
        // 添加数据
        arrayDemo.insert(10);
        arrayDemo.insert(15);
        arrayDemo.insert(18);
        arrayDemo.insert(20);
        arrayDemo.insert(30);
        //打印添加的数据
        arrayDemo.print();
        //查询值
        System.out.println(arrayDemo.search(20));
        //根据下标查找数据
        System.out.println(arrayDemo.get(3));
        // 删除数据
        arrayDemo.delete(4);
        //删除后,查询数据
        arrayDemo.print();
        //更新数据
        arrayDemo.update(1,58);
        arrayDemo.print();*/

        arrayDemo.insert1(10);
        arrayDemo.insert1(52);
        arrayDemo.insert1(28);
        arrayDemo.insert1(36);
        arrayDemo.insert1(19);
        arrayDemo.insert1(8);
        arrayDemo.print();
        System.out.println(arrayDemo.ErFenSearch(36));
    }
}