天天看點

筆試經常遇到的選擇排序、冒泡排序和二分法查找

//冒泡排序
    public static void bubbleSort(int[] arr){
        for(int x=;x<arr.length-;x++){
        for(int y=; y<arr.length--x;y++){
            if(arr[y]>arr[y+]){
                int temp=arr[y];
                arr[y]=arr[y+];
                arr[y+]=temp;
            }
        }
        }
    }
           
//選擇排序
    public static void selectSort(int[] arr){
        for(int x=;x<arr.length-;x++){
        for(int y=x+; y<arr.length;y++){
            if(arr[y]<arr[x]){
                int temp=arr[y];
                arr[y]=arr[x];
                arr[x]=temp;
            }
        }
        }
    }
           
//二分法查找
    public static int haleSearch(int[] arr, int key){
        int max=arr.length;
        int min=;
        int mid=(max+min)/;
        while(arr[mid]!=key){
            if(key>arr[mid]){
                min=mid+;
            }else if(key<arr[mid]){
                max=mid-;
            }

            if(min>max){
                return -;
            }
            mid=(max+min)/;
        }
        return mid;
    }
           
//擷取數組中的最大值, 第一種方法
    public static int getMax(int[] arr)
    {
        int max = arr[];
    for(int x=;x<arr.length;x++)
    {
    if(arr[x]>max)
        max=arr[x];
    }
    return max;
    }
           
//擷取最大值的另一種方式,
    public static int getMax_2(int[] arr)
    {
        int max=;
    for(int x=;x<arr.length;x++)
    {
    if(arr[x]>arr[max])
        max=x;
    }
    return max;
    }
           

繼續閱讀