// 用递归求数组中最大的元素
public static int max(int a, int b) {
return a > b ? a : b;
}
public static int maxnum(int a[], int begin) {
int length = a.length - begin;
if (length == 1) {
return a[begin];
} else {
return max(a[begin], a[begin + 1]);
}
}
public static void main(String[] args) {
int a[] = { 0, 16, 2, 3, 4, 5, 10, 7, 8, 9 };
System.out.println(maxnum(a, 0));
}
//数组中一个数减去它右边子数组中的第一个数字可以得到的差值,求最大值
@Test
public void getMax() {
int a[] = {1,4,17,3,2,9};
int len = a.length;
int diff[] = new int [len];
int max[] = new int [len];
diff[0] =Integer.MIN_VALUE;
max[0] = a[0];
int i =1;
for(;i<len;i++){
diff[i] = diff[i-1]>max[i-1]-a[i]?diff[i-1]:max[i-1]-a[i];
max[i] = max[i-1]>a[i]?max[i-1]:a[i];
}
System.out.println(Arrays.toString(a));
System.out.println(diff[i-1]);
}
}
//求数组中元素的最小距离 假设找 4,8
@Test
public void minDistance() {
int a[] = {4,5,6,4,7,4,6,4,7,8,5,6,4,3,10,8};
int n1_index = Integer.MAX_VALUE;
int n2_index = Integer.MAX_VALUE;
int min = Integer.MAX_VALUE;
for(int i = 0;i<a.length;i++){
if(a[i]==4){
n1_index = i;
min = min<Math.abs(n1_index-n2_index)?min:Math.abs(n1_index-n2_index);
}
if(a[i] == 8){
n2_index = i;
min = min<Math.abs(n1_index-n2_index)?min:Math.abs(n1_index-n2_index);
}
}
System.out.println(min);
}
//对数组的俩个子有序数段进行排序
@Test
public void merge() {
int a[] = {1,5,6,7,9,2,4,8,10,13,14};
int mid = 0;
for(int i = 0;i<a.length;i++){
if(a[i+1]<a[i]){
mid = i+1;
break;
}
}
for(int i = 0;i<mid;i++){
if(a[i]>a[mid]){
int temp = a[i];
a[i] = a[mid];
a[mid] = temp;
}else if(a[i+1]<a[mid]){
int temp = a[i+1];
a[i+1] = a[mid];
a[mid] = temp;
}
for(int j = mid;j<a.length-1;j++){
if(a[j]>a[j+1]){
int temp = a[j+1];
a[j+1] = a[j];
a[j] = temp;
break;
}
}
}
System.out.println(Arrays.toString(a));
}
//求数组的交集
@Test
public void intersection() {
int a[] = {0,1,2,3,4};
int b[] = {1,3,5,7,9};
int i=0;
int j=0;
ArrayList<Integer> arrayList = new ArrayList<>();
while (true) {
if(a[i]==b[j]){
arrayList.add(a[i]);
i++;
j++;
}else if(a[i]>b[j]){
j++;
}else{
i++;
}
if(i==a.length||j==b.length){
break; }
}
System.out.println(arrayList.toString());
}
[1, 3]