数据结构与算法(一)
来源:互联网 发布:软件市场分析 编辑:程序博客网 时间: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
- 数据结构与算法(一)
- 数据结构与算法(一)
- 数据结构与算法(一)
- 数据结构与算法(一)
- 数据结构与算法(一)
- 算法与数据结构(一)
- 数据结构与算法一
- 数据结构与算法一
- 数据结构与算法总论(一)
- 数据结构与算法分析(一)
- 算法与数据结构(一)--快速排序
- 数据结构与算法(一)概论
- 【数据结构与算法分析(一)】排序
- 数据结构与算法基础(一)
- 数据结构与算法笔记(一)单链表
- 数据结构与算法--二叉树(一)
- 数据结构与算法:数组(一)
- 数据结构与经典算法(一)
- 如何使用HTML5自定义数据属性
- C++关于system
- css3
- mysql语言结构
- Peterson算法-软件实现进程(线程互斥)
- 数据结构与算法(一)
- Angular-route
- POJ3783Balls
- 解决Error running app:Instant Run requires 'Tools | Android | Enable integration ' to be enabled
- C#实现软件试用功能
- MySQL 数据类型
- Vijos 1911题:珠心算测验
- lazy-generator JAVA代码自动生成的插件
- ScheduledExecutorService定时周期执行指定的任务