forked from Ameesha15/DSA-ALGORITHMS
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMyArray.java
More file actions
112 lines (110 loc) · 3.26 KB
/
Copy pathMyArray.java
File metadata and controls
112 lines (110 loc) · 3.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
import javax.naming.event.ObjectChangeListener;
import java.util.Arrays;
public class MyArray{
//for store data;
private int [] elements;
public MyArray(){
elements = new int[0];
}
public int size(){
return elements.length;
}
//往数组末尾增加一个元素
public void add(int element){
int [] newArr = new int[elements.length+1];
for(int i=0;i<elements.length;i++){
newArr[i]=elements[i];
}
newArr[elements.length]=element;
elements=newArr;
}
//打印所有元素到控制台;
public void show(){
System.out.println(Arrays.toString(elements));
}
//删除一个数组中的一个元素
public void delete(int index){
//判断下标越界
if(index<0||index>elements.length-1){
throw new RuntimeException("下标越界");
}
int[] newArr = new int[elements.length-1];
for(int i=0;i<newArr.length;i++){
if(i<index){
newArr[i]=elements[i];
}else{
newArr[i]=elements[i+1];
}
}
elements= newArr;
}
//fetch an element of the array according to the given index
public int get(int index){
if(index<0||index>elements.length-1){
throw new RuntimeException("下标越界");
}
return elements[index];
}
//insert an element to a position according to the given index
public void insert(int index,int value){
//传入index的检查
if(index<0||index>elements.length-1){
throw new RuntimeException("下标越界");
}
int[] newArr = new int[elements.length+1];;
for(int i = 0;i<newArr.length;i++){
if(i<index){
newArr[i]=elements[i];
} else if(i==index){
newArr[i] = value;
} else{
newArr[i]=elements[i-1];
}
}
elements = newArr;
}
public void set(int index,int value){
if(index<0||index>elements.length-1){
throw new RuntimeException("下标越界");
}
elements[index]=value;
}
//orderSearch
public Object search(int value){
for(int i=0;i<elements.length;i++){
if (elements[i]==value) {
return i;
}
}
return -1;
}
//binarySearch
public int binarySearch(int target){
int begin = 0;
//end
int end = elements.length-1;
//intermediate
int mid = (begin+end)/2;
int index = -1;
while(true){
//check element of mid is whether what you search for or not
//最小二分法分到最后两个数相等或者起始大于结束说明没有这个target!非常重要这一点!
if(begin>=end){
index = -1;
return index;
}
if(elements[mid]==target){
index = mid;
return index;
}else{
if(elements[mid]>target){
end = mid-1;
}
if(elements[mid]<target){
begin = mid+1;
}
mid = (begin+end)/2;
}
}
}
}