-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSortedArrayList.java
More file actions
39 lines (39 loc) · 818 Bytes
/
Copy pathSortedArrayList.java
File metadata and controls
39 lines (39 loc) · 818 Bytes
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
import java.util.ArrayList;
class SortedArrayList<E extends Comparable<E>> extends ArrayList<E>{
public SortedArrayList(){
super();
}
@Override
public boolean add(E e){
if(this.isEmpty()){
return super.add(e);
}else{
super.add(getInsertionPoint(e),e);
return true;
}
}
private int getInsertionPoint(E e){
int low = 0;
int high = this.size();
return getInsertionPoint(e, low, high);
}
private int getInsertionPoint(E e, int low, int high){
if(low<high){
int mid = (low+high)/2;
if(this.get(mid).compareTo(e)<0){
return getInsertionPoint(e, mid+1, high);
}else{
return getInsertionPoint(e, low, mid);
}
}
return low;
}
public int indexOf(E e){
int index = getInsertionPoint(e);
if(this.get(index).equals(e)){
return index;
}else{
return -1;
}
}
}