Java | 查找与排序算法

2018-08-26  本文已影响13人  tingshuo123
二分查找
public class BinarySearch {
    /**
     * 二分查找
     * @param arr 数据源
     * @param elem 需要查找的元素
     * @param left 查找范围的下限
     * @param right 查找范围的上限
     * @return 元素的下标,未找到返回 -1
     */
    public static int  binarySearch(int arr[], int elem, int left, int right) {
        // elem 不存在
        if (left > right) {
            return -1;
        }

        // 找到了,返回
        int mid = (left + right) / 2;

        if (arr[mid] == elem) {
            return mid;
        }


        if (elem > arr[mid]) {
            // 搜索右边
            return binarySearch(arr, elem, mid + 1, right);
        } else {
            // 搜索左边
            return binarySearch(arr, elem, left, mid - 1);
        }
    }
}
冒泡排序
public class BubbieSort {

    public static void bubbieSort(int arr[]) {

        for (int i=0; i<arr.length; i++) {

            boolean isSroted = true;

            for (int j=0; j<arr.length - 1 - i; j++) {
                if (arr[j] > arr[j+1]) {
                    int t = arr[j];
                    arr[j] = arr[j+1];
                    arr[j] = t;

                    isSroted = false;
                }
            }

            if (isSroted) {
                break;
            }
        }
    }
}

上一篇 下一篇

猜你喜欢

热点阅读