数据结构与算法(一)

来源:互联网 发布:软件市场分析 编辑:程序博客网 时间:2024/06/04 19:48

面向对象编程方式

1. 使用自定义类封装数组;

2. 添加类方法来实现数据操作。


无序数组(增、删、改、查、更、显):

public class MyArray {private long[] arr;//表示有效数据的长度private int elements;public MyArray(){arr=new long[50];}public MyArray(int maxSize){arr=new long[maxSize];}/* * 添加数据 */public void insert(long value){arr[elements]=value;elements++;}/* * 显示数据 */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[index]=newvalue;}}}

有序数组(增、删、改、查、更、显):

public class MyOrderArray {private long[] arr;//表示有效数据的长度private int elements;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<elements;i++){if(arr[i]>value){break;}}for(int j=elements;j>i;j--){arr[j]=arr[j-1];}arr[i]=value;elements++;}/* * 显示数据 */public void display(){System.out.print("[");for(int i=0;i<elements;i++){System.out.print(arr[i]+" ");}System.out.println("]");}/* * 查找数据(1. 线性查找) */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;}}/* * 2. 二分法查找 */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;}}}}/* * 查找数据,根据索引来查 */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[index]=newvalue;}}}

测试:

public class TestMyArray {public static void main(String[] args) {              //测试MyArray//MyArray arr=new MyArray();//arr.insert(13);//arr.insert(34);//arr.insert(90);////arr.display();//System.out.println(arr.search(90));////System.out.println(arr.get(1));////arr.delete(1);//arr.display();////arr.change(0, 12);//arr.display();        //测试MyOrderArrayMyOrderArray arr=new MyOrderArray();arr.insert(90);arr.insert(80);arr.insert(70);arr.insert(890);arr.insert(901);arr.display();System.out.println(arr.binarySearch(70));}}



0 0
原创粉丝点击