您的位置:首页 > 其它

find min and max -- 1.5n times for comparison

2014-03-06 16:01 369 查看
1. divide and conquer

public static int[] findMinMax(int[] array, int[] res, int start , int end){
int[] minmax = new int[2];
if(end - start <= 1){
if(array[start] < array[end]){
minmax[0] = array[start] ;
minmax[1] = array[end] ;
}
else {
minmax[1] = array[start] ;
minmax[0] = array[end] ;
}
return minmax;
}
int mid = (start + end )/2;
int[] leftminmax = findMinMax(array, res, start, mid);
int[] rightminmax = findMinMax(array, res, mid+1, end);

if(leftminmax[0] < rightminmax[0]){
minmax[0] = leftminmax[0];
}
else {
minmax[0] = rightminmax[0];
}

if(leftminmax[1] > rightminmax[1]){
minmax[1] = leftminmax[1];
}
else {
minmax[1] = rightminmax[1];
}
return minmax;
}

2. adjacent comparison
public static void findMinMax(int[] array){
int[] minmax = new int[2];
minmax[0] = array[array.length-1];
minmax[1] = array[array.length-1];
int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;
for(int i =0; i<array.length/2*2; i=i+2){
if(array[i] > array[i+1]){
min = array[i+1];
max = array[i];
}
else{
min = array[i];
max = array[i+1];
}
if(min < minmax[0] )
minmax[0] = min;
if(max > minmax[1] )
minmax[1] = max;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ds
相关文章推荐