遞增和二分組合的查詢法

2021-07-04 08:54:41 字數 707 閱讀 5458

前面我們分別列出了遞增查詢法和二分查詢法,各有優缺點。遞增適用範圍廣,對陣列元素順序沒有要求,但效率較低;而二分法運算效率高,但對陣列元素的排列有要求需要從小到大排序好。因此我們可以將兩種演算法組合到乙個程式裡面,先去判斷給出的陣列元素是否已經排列好,若排列好就使用二分法查詢執行速度快,若沒有排序好就使用遞增法進行查詢,下面是實現**:

#include"stdafx.h"

#include

using namespace std;

bool check(int,int);

int findadd(int,int,int);

int findhalf(int,int,int);

bool check(int x,int n)

return true;

}int findadd(int a,int x,int n)

return n;

}int findhalf(int a,int x,int n)

}return n;

}int main()

;int a,check,add,half;

cout<<"請輸入需要查詢的數:";

cin>>a;

check=check(x,10);

if(check==true)

else

system("pause");

return 0;

}

選值 二分 組合數

題目描述 給定n個數,從中選出三個數,使得最大的那個減最小的那個的值小於等於d,問有多少種選法。第一行兩個整數n,d 1 n 100,000,1 d 1000,000,000 第二行n個整數滿足abs ai 1,000,000,000。資料保證a單調遞增。輸出乙個整數表示滿足條件的選法。4 3 1 ...

順序查詢法和二分查詢法

方法1 def shunxu f list,temp for index,i in enumerate f list if i temp return index return none方法2 def shunxu f flist,temp for i in range len f flist if...

AHOI2018初中組 二分查詢 分組

最開始是想二分答案的,但是沒有考慮到資料中重複的數值的情況,50 分 wa 了。但是這題顯然適合二分查詢 當我們的資料 在陣列中是線性排列的,就可以使用二分查詢。需要兩個輔助陣列 你甚至還會發現這題有點蜘蛛紙牌那味 霧 不多說閒話,下面是 二分查詢 設計乙個陣列 g 表示第 i 個分組中 需要加入的...