代码改变世界

数据结构学习--Java数组的实现

2019-10-31 16:26  小花儿鹿  阅读(616)  评论(0编辑  收藏  举报

一、创建数组

private long[] arr;//初始化数组

private int elemenets;//数组有效数据长度

二、添加数组

public void insert(long value){

  arr[elemenets] = value;

  elemenets ++;

}

三、显示数组

public void display(){

  System.out.print("[");

  for(int i = 0;i < elements;i ++) {

    System.out.print(arr[i] + " ");

  }

  System.out.println("]");

}

四、查找数据

public int search(long value) {

  int i ;

  for(i = 0;i < elements; i ++){

    if(value == arr[i]) {

      break;

    }

  }

  if(i == elements) { //说明没查到

    return -1;

  }else{

    return i;  

  }

}

五、查找数据,根据索引来查

public long 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 change(int index,int newvalue){

  if(index > elements || index < 0) { //角标越界

    throw new ArrayIndexOutOfBoundsException();

  }else{

    arr[idnex] = newvalue;

  }

}

八、有序数组

public void insert(long 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 binarySearch(long value){

  int middle = 0;

  int low = 0;

  int pow = elements;

  while(true){

    middle = (pow + low) / 2;

    if(arr[middle] == value) {

      return middle;

    } else if(low > pow) {

      return -1;

    } else {

      if(arr[middle] > value){

        pow = middle - 1;

      } else {

        low = middle + 1;

      }

    }

  }

}