排序

来源:互联网 发布:计算器算人工智能吗 编辑:程序博客网 时间:2024/06/07 05:58
    /**         * 选择排序:每次都拿第一个元素进行比较         * @param arr         */        public static void selectSort(int[] arr) {        for (int x = 0; x < arr.length - 1; x++) {            for (int y = x + 1; y < arr.length; y++) {                if (arr[x] > arr[y]) {                    int temp = arr[x];                    arr[x] = arr[y];                    arr[y] = temp;                }            }        }    }    /**     * 冒泡排序:两两比较     * 最值出现在最后一位     * @param arr     */    public static void bubbleSort(int[] arr){        for(int x=0;x<arr.length-1;x++){            for(int y=0;y<arr.length-x-1;y++){//-x:让每一次比较元素减少,-1:防止数组下标越界                if(arr[y]>arr[y+1]){                    int temp=arr[y];                    arr[y]=arr[y+1];                    arr[y+1]=temp;                }            }        }    }
//二分查找法。必须有前提:数组中的元素要有序。     public static int halfSeach_2(int[] arr,int key){        int min,max,mid;        min = 0;        max = arr.length-1;        mid = (max+min)>>1; //(max+min)/2;        while(arr[mid]!=key){            if(key>arr[mid]){                min = mid + 1;            }            else if(key<arr[mid])                max = mid - 1;            if(max<min)                return -1;            mid = (max+min)>>1;         }        return mid;    }
0 0