C 二叉查詢及程式設計

2021-10-04 11:40:33 字數 1385 閱讀 4595

notes:

1.迴圈的時候left<=right ,這樣若能找到的話,就一定會判斷到 nums[mid]==value;

2.mid = left+((right-left)>>1);為了防止兩個數的和會溢位

#include#includeusing namespace std;

int binsearch(vectornums,int value)

if(nums[mid]temp;

int a;

for(int i=0;i<8;i++)

int x;

cin>>x;

int res=binsearch(temp,x);

cout<題目:

把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個遞增排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如,陣列[3,4,5,1,2][1,2,3,4,5]的乙個旋轉,該陣列的最小值為1。  

示例 1:

輸入:[3,4,5,1,2]

輸出:1

示例 2:

輸入:[2,2,2,0,1]

輸出:0

主要想法:

可以看成前後兩個非遞減陣列,想要找的值是第二個陣列裡的第乙個值。而且第乙個陣列裡的任意數都要比第二個陣列裡的大或等。

判斷numbers[mid] 和numbers[j]的關係:

if(numbers[mid]>numbers[j])      i=mid+1;說明現在mid第乙個陣列裡,需要將i=mid+1,捨棄掉前面的那些元素

if(numbers[mid]==numbers[j])    j=j-1;說明現在的範圍中有兩個數是一樣的,所以可以捨掉乙個

if(numbers[mid]最後的最後,一定會i=j的hhh

ps:比書上給的方法清晰多了鴨~,再也不用分類討論特殊情況了(1,2,3,4,5或1 1 1 1 1 1 1)

class solution

else if(numbers[mid]else

}return numbers[i];

}};

樹 二叉樹及二叉查詢樹

n n 0 個結點的有限集。如果 n 0,稱為空樹 如果 n 0,則 1 有且僅有乙個特定的稱為根 root 的結點,根只有直接後繼,沒有直接前驅 2 當n 1,除根外其它結點劃分為 m m 0 個互不相交的有限集t1,t2 tm,其中每個集合本身又是一棵樹,稱為根的子樹 subtree 樹的結點 ...

二叉查詢樹 C

include stdafx.h include using namespace std 二叉查詢樹的性質 1.二叉排序樹或為空樹 2.若左子樹不為空,則左子樹中所有節點的值均小於或等於根節點 3.若右子樹不為空,則右子樹中所有節點的值均大於或等於跟節點 4.左右子樹也為二叉排序樹 5.二叉排序樹採...

C 二叉查詢樹

二叉排序樹 binary sort tree 又稱二叉查詢樹 binary search tree 亦稱二叉搜尋樹。二叉排序樹或者是一棵空樹,或者是具有下列性質的二叉樹 1 若左子樹不空,則左子樹上所有結點的值均小於或等於它的根結點的值 2 若右子樹不空,則右子樹上所有結點的值均大於或等於它的根結點...