Java对数组的操作(一)

        一、获取数组中的最大值:

        public static int getMax_1(int [] array) {//第一种方法          
                    int max=array[0];//存储数组最大值,初始值为数组中的第一个元素。注意:这里的初始化值只能是数组中的元素,不能随意的赋值,这主要考虑到这种情况:有可能数组中的元素均小于随意赋的值,那么这时这个随意赋的值岂不成了最大值。
                    for (int i = 1; i < array.length; i++) {//注意:这里i的初始值为1,这主要是考虑到代码的执行效率:如果为0的话,则程序做了一次“无用功”
                                if (array[i]>max){
                                         max=array[i];
                                }
                    }
                    return max;
        }
 
        public static int getMax_2(int [] array){//第二种方法            
                    int max=0;//存储数组最大值的下标,初始值为数组中的第一个元素的下标。
                    for (int i = 1; i < array.length; i++){ //注意:这里i的初始值为1,这主要是考虑到代码的执行效率:如果为0的话,则程序做了一次“无用功”              
                               if (array[i]>array[max]){
                                         max=i;
                               }
                    }
                    return array[max];
        }

        二、数组排序(从小到大)

        public static void arrayTaxis_1(int [] array){//第一种方法:选择排序。注意:这里的返回值类型为void,而非int[]。        
                    for (int i = 0; i < array.length-1; i++){ //注意:这里i的取值范围之所以为array.length-1而不是array.length是因为采用这种方法排序数组时,当遍历完倒数第二个元素后就可以排出其顺序了。          
                           for (int j = i+1; j < array.length; j++){
                                     if (array[i]>array[j]){
                                                int temp=array[i];
                                                array[i]=array[j];
                                                array[j]=temp;
                                     }
                           }
                     }
        }
 
        public static void arrayTaxis_2(int [] array){//第二种方法:冒泡排序——相邻的两个元素进行比较,如果符合条件就换位。注意:这里的返回值类型为void,而非int[]。       
                     for (int i = 0; i < array.length-1; i++){ //注意:这里i的取值范围之所以为array.length-1而不是array.length是因为采用这种方法排序数组时,只需要比较array.length-1次就可以确定其顺序。          
                            for (int j = 0; j < array.length-i-1; j++){//数组长度减i是为了每循环比较一次数组长度就缩短x个,再减1是因为避免第一次比较时本循环出现数组下标越界。            
                                     if (array[j]>array[j+1]){
                                               int temp=array[j+1]; 
                                               array[j+1]=array[j];
                                               array[j]=temp;
                                     }
                             }
                      }
        }
        public static void arrayTaxis_3(int [] array){//第三种方法:借助Arrays的sort方法。注意:这里的返回值类型为void,而非int[]。        
                     Arrays.sort(array);
        }

        三、在数组中寻找某个元素的位置:

        public static int arraySearch_1(int [] array,int num){//第一种方法:传统方法,本方法用于获取num第一次出现的位置。        
                     for (int i = 0; i < array.length; i++){          
                             if (array[i]==num){
                                      return i;
                              }
                     }
                     return -1;//说明数组中不存在该元素。
        }
 
        public static int arraySearch_2(int [] array,int num){//第二种方法:折半查找——用于有序(比如数组由小到大排序)的数组中。        
                     int min=0;
                     int max=array.length-1;
                     int mid=(min+max)/2;
                     while(array[mid]!=num){
                             if (num>array[mid]){
                                        min=mid+1;
                             }else if (num                                        min=mid-1;
                             }
                             if (min>max){
                                        return -1;//说明数组中不存在该元素。
                             }
                             mid=(min+max)/2;
                     }
                     return mid;
        }
        public static int arraySearch_3(int [] array,int num){//第三种方法:折半查找——用于有序(比如数组由小到大排序)的数组中。         
                     int min=0;
                     int max=array.length-1;
                     int mid;
                     while(max>=min){  
                              mid=(min+max)/2;
                              if (num>array[mid]){
                                       min=mid+1;
                              }else if (num                                       min=mid-1;
                              }else{
                                       return mid;
                              }
                    }
                     return -1;//说明数组中不存在该元素。
        }

你可能感兴趣的:(Java)