Professional Documents
Culture Documents
1
.") חיפוש של איבר קטן ביותר וגדול ביותר בעזרת אלגוריתם של "זוגות2
.חיפוש של איבר קטן ביותר וגדול ביותר בעזרת אלגוריתם סטנדרטי וחישוב של מסר השוואות
import java.util.Arrays;
public class MinMax {
//
// Search of maximum && minimum elements by pairs
public static int[] MiniMaxi2(int []arr){
int min, max;
int len = arr.length;
if (arr[0]<arr[1]){
min = arr[0];
max = arr[1];
}
else{
min = arr[1];
max = arr[0];
}
for (int i=2; i<(2*(len/2)); i=i+2){
if(arr[i]<arr[i+1]){
if(arr[i]<min) min = arr[i];
if(arr[i+1]>max) max = arr[i+1];
}
else{
if(arr[i+1]<min) min = arr[i+1];
if(arr[i]>max) max = arr[i];
}
}
if (len%2!=0){
if (arr[len-1]>max){
max = arr[len-1];
}
else{
if (arr[len-1]<min){
min = arr[len-1];
}
}
}
int [] ans = new int[2];
ans[0] = min;
ans[1] = max;
return ans;
}
// standard algorithm for search of maximum && minimum elements
public static int maxMinArr(int []arr){
int max = arr[0], min = arr[0], count = 0;;
for (int i=1; i<arr.length; i++){
count++;
if(arr[i] < min){
min = arr[i];
}
else{
count++;
if(arr[i] > max){
max = arr[i];
}
}
2
}
return count;
}
// get random array
public static int[] randArr(int size, int to){
int arr[] = new int[size];
for (int i=0; i<arr.length; i++){
arr[i] = (int)(Math.random()*to);
}
return arr;
}
// number of comparisons in standard algorithm
public static double meanNumOfComparisons (){
int size = 100, num = 10000, count = 0;
for (int i=0; i<num; i++){
int [] arr = randArr(size, size*2);
count = count + maxMinArr(arr);
}
return ((double)count)/num;
}