几种常见算法,面试经常考

最近在面试 每次总有几道算法题。算法 这种东西啊, 没有深入骨髓几天不用就忘了,现在来记录下。

求最值:

int a[]={21,213,55,78}; 
int max=a[0];
for(int k=0;k

选择排序:

for(int i=0;i

冒泡排序:

for(int i=0;i

直接插入排序

for(int i=1;i=0&&temp

二分查找:

//循环形式  
public static int binarySearch(int[] arr, int x) {
        int low = 0;
        int hight = arr.length - 1;
        while (low <= hight) {
            int middle = (hight + low) / 2;
            if (x == arr[middle]) {
                return middle;
            } else if (x < arr[middle]) {
                hight = middle - 1;
            } else if (x > arr[middle]) {
                low = middle + 1;
            }
        }
        return -1;
    }


//递归形式

protected static int binarySearch(int[] arr, int x, int beginIndex,
        int endIndex) {
    // 升序的数组
    int midIndex = (beginIndex + endIndex) / 2;
    if (x < arr[beginIndex] || x > arr[endIndex] || beginIndex > endIndex) {
        return -1;
    }

    if (x < arr[midIndex]) {
        return binarySearch(arr, x, beginIndex, endIndex - 1);
    } else if (x > arr[midIndex]) {
        return binarySearch(arr, x, beginIndex + 1, endIndex);

    } else {
        return arr[midIndex];
    }

}

你可能感兴趣的:(备忘录,备忘录,Java)