查詢陣列中是否存在任意三個數可組成三角形的演算法

2021-06-17 15:20:07 字數 580 閱讀 9587

分治法:

先把陣列一a[i]為界,分成兩部分,左邊比a[i]小,右邊比a[i]大。

1:左面陣列去乙個數、右面陣列取乙個數,a[i]三個數判斷;

2:左面取兩個數與a[i]判斷;

3:右面取兩個數與a[i]判斷;

**:#include#include#includeusing namespace std;

void swap(int *a,int *b)

int valid(int a,int b,int c)

int partion(int * a,int p,int q)//快排

swap(&a[i+1],&a[q]);

return i+1;

}int subtri(int * a,int p,int q)

{ int mid;

if(q-p+1 < 3)return 0;

mid = partion(a,p,q);

if(subtri(a,p,mid-1)||subtri(a,mid+1,q))return 1;

else

{int l,r;

for(l = p;l

從二維陣列中查詢乙個數,判斷是否存在

乙個二維陣列,沒每一行都按照從左到右遞增的順序排序,每乙個列都按照從上到下遞增的排序,設計乙個函式,輸入乙個這樣的陣列和乙個整數,判斷陣列中是否含有該整數。例如下面陣列,查詢數字7返回true,查詢5,返回false 1,2,8,9 2,4,9,12 4,7,10,13 6,8,11,15 一種思路...

任意輸入三個數判斷其是否為三角形

include void compare float a,float b,float c void sort float a,float b,float c int main void return0 void compare float a,float b,float c void sort fl...

二維陣列中查詢某個數是否存在

問題描述 在乙個二維陣列中,每一行按照從左道右遞增的順序排列,每一列按照從上到下遞增的順序排列。給定乙個數值,判斷二維陣列中是否存在這個數字。思路分析 首先選取陣列中右上角的數字,如果該數字等於要查詢的數字,查詢過程結束 如果小於要查詢的數字,那麼去除這個數字所在的列 如果大於要查詢的數字,那麼去除...