分割征服
分割征服
📌繰り返し比較二乗
反復アルゴリズム時間複雑度:O(n)
分割征服アルゴリズム時間複雑度:O(log 2 n)
long exp(long x, long y){
long r = exp(x,y/2);
long res = r*r;
if(y==1) return x;
if(y%2==1) res *= x; //홀수일 때
return res;
}
📌バイナリサーチ
バイナリ検索を行うには、資料をソートする必要があります.
時間複雑度:O(log 2 n)
サーチプロセス
大きければ、資料の右半分を新たに検索します.
static int binarySearch(int[] arr, int key) {
//arr은 정렬된 오름차순배열이어야 한다.
int start = 0, end = arr.length-1;
while(start<=end) {
int mid = (start+end) / 2; //중간위치
if(arr[mid] == key) {
return mid;
} else if( arr[mid]<key) {
start = mid +1;
} else {
emd = mid-1;
}
//못찾았다면
return -1;
}
}
Reference
この問題について(分割征服), 我々は、より多くの情報をここで見つけました https://velog.io/@velogmj/divideconquerテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol