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