데이터 구조/전통 이분법 질서 배열 (자바)

한가 하고 괜찮아 요. 계속 외 로 워 요.
이분법 조 회 는 많은 책 에서 그것 의 그림 자 를 볼 수 있다.
간단 한 논리 입 니 다. 조회 가 빠 르 고 삭제 디자인 을 삽입 하여 자 리 를 옮 기 는 작업 이 느 립 니 다.

  public class HightArray {
	
	int number;//数组当前值的个数
	long[] array;
	
	public HightArray(int num){
		array = new long[num];
		number = 0;
	}
	
	/**
	 * 添加一个值
	 * @param i
	 * @return
	 */
	public boolean insert(long value){
		int i;
		//有序数组,值在插入时需要确认其位置
		for (i = 0; i < number; i++) {//确认放在第几位子上
			if (array[i] > value)//从小到大放值
				break;
		}
		for (int j = number; j > i; j--) {
			array[j] = array[j-1];
		}
		 array[i] = value;
		 number++;
			return true;
	}
	
	
	/**
	 * 删除一个值
	 * @return
	 */
	public boolean delete(long value){
		int i = find(value);
		if (i < 0)//确保有这个值
			return false;
//		else if (i == array.length - 1) { 使用自己的number操作
//			array[i] = null;
//			return true;
//		} array.length - 1
		for (int j = i; j < number - 1; j++) {//值替换
			array[j] = array[j+1];
		}
		number--;
		return true;
	}
	
	/**
	 * 根据值查找
	 * @return
	 */
	public int find(long value){
		//排除没有值时候查找
		if (number == 0) {
			System.out.println("没放值找毛..");
			return -1;
		}
		int min = 0;//最小值
		int max = number - 1;//当前值
		int num;//当前寻找记录(下标)
		while (true) {
			if (min > max) {
				return -1;
			}
			num = (min + max) / 2;//二分
			if (array[num] == value) {
				return num;//find value
			} else if (array[num] > value) {//next find
					max = num - 1;//out while (true) 
			} else {//小于value
					min = num + 1;
			   }
			}
		}
	

	/**
	 * 显示输出数组所有的值
	 */
	public void syso(){
		if (array == null) {
			System.out.println("array = null");
		} else {
			for (int i = 0; i < number; i++) {
				System.out.println(array[i] + " ");
			}
		}
	}
}


테스트 는 기본적으로 통과 되 었 습 니 다. delete 에 서 는 number --> (number - 1) 로 만 배열 이상 을 제거 하 였 습 니 다.
test.java

 	public static void main(String[] args){
		HightArray array = new HightArray(5);
		array.insert(12);
		array.insert(13);
		array.insert(11);
		array.insert(12);
		array.insert(1);
		array.delete(1);
		array.syso();
             

控制台输出:
11 
12 
12 
13 


좋은 웹페이지 즐겨찾기