1 public class TestMyArray{
2
3 public static void main(String[] args) {
4
5 MyArray array = new MyArray(6);
6 array.insert(10);
7 array.insert(12);
8 array.insert(8);
9 array.insert(17);
10 array.insert(6);
11 array.insert(15);
12 array.display();
13 System.out.println(array.search(12));
14
15 System.out.println(array.get(1));
16
17 array.delete(1);
18 array.delete(3);
19 array.display();
20
21 }
22
23 }
24
25 /**
26 * 使用自定义类封装数组 添加类方法实现操作
27 *
28 */
29 class MyArray {
30 private long[] array;
31 //表示有效数据的长度
32 private int elements;
33 public MyArray() {
34 array = new long[50];
35 }
36
37 public MyArray(int maxSize) {
38 array = new long[maxSize];
39 }
40
41 /**
42 * 添加数据
43 */
44 public void insert(long value){
45 array[elements] = value;
46 elements++;
47 }
48
49 /**
50 * 显示数据
51 */
52 public void display(){
53 System.out.print("[" + array[0]);
54 for(int i= 1; i < elements; i++){
55 System.out.print("," + array[i]);
56 }
57 System.out.println("]");
58 }
59
60 /**
61 * 查找数据
62 */
63 public int search(long value){
64 int i = 0;
65 for(; i < elements; i++){
66 if(value == array[i]){
67 break;
68 }
69 }
70 if(i == elements){
71 return -1;
72 } else {
73 return i;
74 }
75 }
76 /**
77 * 查找数据,根据索引来查
78 */
79 public long get(int index){
80 indexOK(index);
81 return array[index];
82 }
83
84 /**
85 * 删除数据
86 */
87 public void delete(int index){
88 indexOK(index);
89 elements--;
90 for(int i = index; i < elements; i++){
91 array[i] = array[i+1];
92 }
93 }
94
95 /**
96 * 更新数据
97 */
98 public void change(int index, int newValue){
99 indexOK(index);
100 array[index] = newValue;
101 }
102
103 /**
104 * 角标越界
105 */
106 public void indexOK(int index){
107 if(index >= elements || index < 0){
108 throw new ArrayIndexOutOfBoundsException();
109 }
110 }
111 }
1 package cn.array;
2
3 /**
4 * 有序数组
5 */
6 public class TestMyOrderArray{
7
8 public static void main(String[] args) {
9
10 MyOrderArray array = new MyOrderArray(6);
11 array.insert(10);
12 array.insert(12);
13 array.insert(8);
14 array.insert(17);
15 array.insert(6);
16 array.insert(15);
17 array.display();
18 System.out.println(array.search(12));
19
20 System.out.println(array.get(1));
21
22 array.delete(1);
23 array.delete(3);
24 array.insert(3);
25 array.display();
26
27 }
28
29 }
30
31 /**
32 * 使用自定义类封装数组 添加类方法实现操作
33 *
34 */
35 class MyOrderArray{
36 private long[] array;
37 //表示有效数据的长度
38 private int elements;
39 public MyOrderArray() {
40 array = new long[50];
41 }
42
43 public MyOrderArray(int maxSize) {
44 array = new long[maxSize];
45 }
46
47 /**
48 * 添加数据
49 */
50 public void insert(long value){
51 int i ;
52 for(i = 0; i < elements; i++){
53 if(array[i] > value){
54 break;
55 }
56 }
57
58 for(int j = elements ; j > i ; j--){
59 array[j] = array[j - 1];
60 }
61
62 array[i] = value;
63 elements++;
64 }
65
66 /**
67 * 显示数据
68 */
69 public void display(){
70 System.out.print("[" + array[0]);
71 for(int i= 1; i < elements; i++){
72 System.out.print("," + array[i]);
73 }
74 System.out.println("]");
75 }
76
77 /**
78 * 查找数据
79 */
80 public int search(long value){
81 int i = 0;
82 for(; i < elements; i++){
83 if(value == array[i]){
84 break;
85 }
86 }
87 if(i == elements){
88 return -1;
89 } else {
90 return i;
91 }
92 }
93 /**
94 * 查找数据,根据索引来查
95 */
96 public long get(int index){
97 indexOK(index);
98 return array[index];
99 }
100
101 /**
102 * 删除数据
103 */
104 public void delete(int index){
105 indexOK(index);
106 elements--;
107 for(int i = index; i < elements; i++){
108 array[i] = array[i+1];
109 }
110 }
111
112 /**
113 * 更新数据
114 */
115 public void change(int index, int newValue){
116 indexOK(index);
117 array[index] = newValue;
118 }
119
120 /**
121 * 角标越界
122 */
123 public void indexOK(int index){
124 if(index >= elements || index < 0){
125 throw new ArrayIndexOutOfBoundsException();
126 }
127 }
128 }
1 /**
2 * 二分法查找数据
3 */
4 public int binarySearch(long value){
5 int middle = 0;
6 int low = 0;
7 int pow = elements;
8
9 while(true){
10 middle = (pow + low) / 2;
11 if(array[middle] == value){
12 return middle;
13 }else if(low > pow){
14 return -1;
15 }else{
16 if(array[middle] > value){
17 pow = middle - 1;
18 }else {
19 low = middle + 1;
20 }
21 }
22
23 }
24
25 }