いくつかのよくあるアルゴリズムがあります。

1610 ワード

最近は面接で毎回いくつかのアルゴリズムがあります。アルゴリズムというものは、骨の髄に深く入り込んでいないと何日間も忘れてしまいます。今記録してみます。
最大値を求める:
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];
    }

}