码迷,mamicode.com
首页 > 编程语言 > 详细

面向对象数组操作

时间:2016-03-02 10:52:10      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:

封装面向对象数组,并且支持有序和无序,查询元素分为顺序查找和二分法。

  1 /** 
  2  * @ClassName: MyArray 
  3  * @Description: 封装自己数组
  4  * @author dongye 
  5  * @date 2016年3月1日 上午9:28:40 
  6  *  
  7  */
  8 public class MyArray {
  9     private long[] arr;
 10     //有效长度
 11     private int elements;
 12     
 13     public MyArray(){
 14         arr=new long[50];
 15     }
 16     
 17     public MyArray(int maxsize){
 18         arr=new long[maxsize];
 19     }
 20      
 21     /** 
 22      * @Description:无序插入
 23      * @return void    返回类型 
 24      * @author dongye  
 25      * @date 2016年3月1日 上午9:31:01 
 26      */
 27     public void insert(long value) {
 28         arr[elements]=value;
 29         elements++;
 30     }
 31     
 32     /**
 33      * 
 34     * @Title: insertOrder 
 35     * @Description: 有序插入
 36     * @return void    返回类型 
 37     * @author dongye  
 38     * @date 2016年3月1日 上午10:10:52 
 39     * @throws
 40      */
 41     public void insertOrder(long value) {
 42         int i;
 43         for (i = 0; i < elements; i++) {
 44             if(arr[i]>value){
 45                 break;
 46             }
 47         }
 48         for(int j=elements;j>i;j--){
 49             arr[j]=arr[j-1];
 50         }
 51         arr[i]=value;
 52         elements++;
 53     }
 54     
 55     
 56     
 57     
 58     /**
 59      * 
 60     * @Title: display 
 61     * @Description: 显示元素
 62     * @author dongye  
 63     * @date 2016年3月1日 上午9:32:25 
 64      */
 65     public void display(){
 66         System.out.print("[");
 67         for (int i = 0; i <elements; i++) {
 68             System.out.print(arr[i]+" ");
 69         }
 70         System.out.println("]");
 71     }
 72     
 73     /**
 74      * 
 75     * @Description: 查找数据(线性查找) 对于无序有序都可以
 76     * @author dongye  
 77     * @date 2016年3月1日 上午9:35:37 
 78      */
 79     public int search(long value){
 80         int i;
 81         for (i = 0; i < elements; i++) {
 82             if(value==arr[i]){
 83                 break;
 84             }
 85         }
 86         if(i==elements){
 87             i=-1;
 88         }
 89         return i;
 90     }
 91     
 92     public int binarySearch(long value){
 93         int middle=0;
 94         int low=0;
 95         int pow=elements;
 96         while(true){
 97             middle=(low+pow)/2;
 98             System.out.println(low+":"+pow);
 99             System.out.println(middle);
100             if(value==arr[middle]){
101                 return middle;
102             }else if(low>pow){
103                 return -1;
104             }else{
105                 if(value>arr[middle]){
106                     low=middle+1;
107                 }else{
108                     pow=middle-1;
109                 }
110             }
111         }
112     }
113     
114     /**
115      * 
116     * @Description: 根据索引查找元素
117     * @return long    返回类型 
118     * @author dongye  
119     * @date 2016年3月1日 上午9:40:59 
120      */
121     public long get(int index){
122         if(index>=elements||index<=0){
123             throw new ArrayIndexOutOfBoundsException();
124         }else{
125             return arr[index];
126         }
127     }
128     
129     /** 
130      * @Title: delete 
131      * @Description: 删除数据
132      * @return void    返回类型 
133      * @author dongye  
134      * @date 2016年3月1日 上午9:41:57 
135      * @throws 
136      */
137     public void delete(int index) {
138         if(index>=elements||index<=0){
139             throw new ArrayIndexOutOfBoundsException();
140         }else{
141             for (int i = index; i < elements; i++) {
142                 arr[index]=arr[index+1];
143                 elements--;
144             }
145         }
146     }
147     
148     /**
149      * 
150     * @Title: change 
151     * @Description: 更新数据 
152     * @return void    返回类型 
153     * @author dongye  
154     * @date 2016年3月1日 上午9:45:27 
155     * @throws
156      */
157     public void change(int index,int newValue){
158         if(index>=elements||index<=0){
159             throw new ArrayIndexOutOfBoundsException();
160         }else{
161             arr[index]=newValue;
162         }
163     }
164     
165 
166 }

 

面向对象数组操作

标签:

原文地址:http://www.cnblogs.com/snow1314/p/5233892.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!