算法与数据结构复习——java封装数组、有序数组

package ch01;


/**
 * @author lixin
 * @date 2018年7月22日
 * @Description 数组
 */
public class MyArray {
	
	private long[] arr;
	
	//表示有效数据长度
	private int element;
	
	public MyArray(){
		arr= new long[50];
	}
	
	public MyArray(int maxsize){
		arr = new long[maxsize];
	}
	
	/**
	 * 添加数据
	 */
	public void insert(long value){
		 arr[element] = value;
		 element++;
	}
	
	/**
	 * 显示所有数据
	 */
	public void show(){
		System.out.print("[");
		for(int i =0;i=element||index<0){
			throw new ArrayIndexOutOfBoundsException();
		}else{
			return arr[index];
		}
	}
	
	/**
	 * 删除数据
	 */
	public void delete(int index) {
		if(index >= element || index < 0) {
			throw new ArrayIndexOutOfBoundsException();
		} else {
			for(int i = index; i < element; i++) {
				arr[i] = arr[i + 1];
			}
			element--;
		}
	}
	
	/**
	 * 更新数据
	 */
	void change(int index,long value){
		if(index >= element || index < 0) {
			throw new ArrayIndexOutOfBoundsException();
		} else {
			arr[index]=value;
		}
	}
}

有序数组

package ch01;

public class MyOrderArray {
	
	private long[] arr;
	
	//表示有效数据长度
	private int element;
	
	public MyOrderArray(){
		arr= new long[50];
	}
	
	public MyOrderArray(int maxsize){
		arr = new long[maxsize];
	}
	
	/**
	 * 通过添加方法来确定数组的有序性
	 */
	public void insert(long value){
		int i; 
		for(i=0;i=i;j--){
			 arr[j+1]=arr[j];
		 }
		 arr[i]=value;
		 element++;
	}
	
	/**
	 * 显示所有数据
	 */
	public void show(){
		System.out.print("[");
		for(int i =0;i=element||index<0){
			throw new ArrayIndexOutOfBoundsException();
		}else{
			return arr[index];
		}
	}
	
	/**
	 * 删除数据
	 */
	public void delete(int index) {
		if(index >= element || index < 0) {
			throw new ArrayIndexOutOfBoundsException();
		} else {
			for(int i = index; i < element; i++) {
				arr[i] = arr[i + 1];
			}
			element--;
		}
	}
	
	/**
	 * 更新数据
	 */
	void change(int index,long value){
		if(index >= element || index < 0) {
			throw new ArrayIndexOutOfBoundsException();
		} else {
			arr[index]=value;
		}
	}
	
	
	/**
	 * 二分法查找
	 */
	int binarySearch(long value){
		int middle=0;
		int left=0;
		int right=element;
		while(true){
			middle=(left+right)/2;
			if(arr[middle]==value){
				return middle;
			}else if(right<=left){
				return -1;
			}else{
				if(value>arr[middle]){
					left=middle+1;
				}
				if(value

测试

package ch01;

public class TestArray {
	public static void main(String[] args) {
//		MyArray arr = new MyArray(40);
//		arr.insert(12);
//		arr.insert(15);
//		arr.insert(159);
//		arr.show();
//		System.out.println(arr.select(159));
//		System.out.println(arr.selectByIndex(2));
//		arr.delete(1);
//		arr.show();
//		arr.change(0, 222);
//		arr.show();
		
		MyOrderArray arr = new MyOrderArray(59);
		arr.insert(11);
		arr.insert(39);
		arr.insert(2);
		arr.show();
		System.out.println(arr.binarySearch(39));
		
		
	}
}

 

你可能感兴趣的:(算法与数据结构)