4

Maximum and Minimum of Array

view full story
linux-howto

http://www.daniweb.com – I have a 2d array with x and y coordinates. I need to figure out the north most, south most, east most, and west most points and print them out. I figure the best way to do this is to find the minimum x value and the corresponding point will be the west most point, the maximum x value and the corresponding point will be the east most, the minimum y value and the corresponding point will be the south most, and the maximum y value and the corresponding point will be the north most. My code below goes through the 2d array of xy points and it finds the correct maximum and minimum x and y values, but I am not able to keep track of the correct index to print out the corresponding point. When I try and do the print statements I am not getting the correct points to be printed out. Any help is appreciated. public static void MaxMin(int[][] a, int size){                 int index=0,min_x = 0,max_x=0,min_y=0,max_y=0,max_x_index=0, max_y_index = 0, min_x_index=0, min_y_index=0;                 if ( size%2 != 0 ){// if size is odd                     min_x = a[0][0];                     min_y = a[0][1];                     max_x = a[0][0];                     max_y = a[0][1];                     index++;                   }                   else{// size is even                     if ( a[0][0] < a[1][0] ){                       min_x = a[0][0];                       max_x = a[1][0];                     }                     if ( a[0][1] < a[1][1] ){                           min_y = a[0][1];                           max_y = a[1][1];                     }                                             index = index + 2;                   }                   int big_x, small_x, small_y, big_y;                   for ( int i = index; i < size; i = i+2 ){                       if ( a[i][0] < a[i+1][0] ){ //one comparison                         small_x = a[i][0];                         big_x = a[i+1][0];                         min_x_index = i;                         max_x_index = i+1;                       }                       else{                         small_x = a[i+1][0];                         big_x = a[i][0];                         min_x_index = i+1;                         max_x_index = i;                       }                                             if ( a[i][1] < a[i+1][1] ){ //one comparison                             small_y = a[i][1];                             big_y = a[i+1][1];                             min_y_index = i;                             max_y_index = i+1;                           }                           else{                             small_y = a[i+1][1];                             big_y = a[i][1];                             min_y_index = i+1;                             max_y_index = i;                           }                                             if ( min_x > small_x ){ //one comparison                         min_x = small_x;                       }                       if ( max_x < big_x ){ //one comparison                         max_x = big_x;                       }                       if ( min_y > small_y ){ //one comparison                             min_y = small_y;                           }                       if ( max_y < big_y ){ //one comparison                             max_y = big_y;                           }                   }                   System.out.println("Northmost Point: " + a[max_y_index][0] + "," + a[max_y_index][1]);                   System.out.println("Southmost Point: " + a[min_y_index][0] + "," + a[min_y_index][1]);                   System.out.println("Westmost Point: " + a[min_x_index][0] + "," + a[min_x_index][1]);                   System.out.println("Eastmost Point: " + a[max_x_index][0] + "," + a[max_x_index][1]);         } (General)