//二分查詢:針對於有序序列
int b_search(int a,int length,int e)
return -1;
} //遞迴改編:
int b_search(int a,int low,int high,int e)else
return -1;
}//測試用例
int main();
int e=6;
coutthrow "age error!";
++countage[age];
}//將桶中的年齡次數資料重新還原存入ages陣列中
int j=0;//表示ages的下標
for(int countageindex=0;countageindexrotate[mid-1])
low=mid+1;
else
return rotate[mid];
}return rotate[0];//如果沒有找到,說明旋轉陣列旋轉了0個數,最小值即為第乙個數
}//測試用例:
int main();
cout<<"最小值為:"<=re[high])
mid=(low+high)/2;
//直接使用順序查詢
if(re[low]==re[high]&&re[low]==re[mid])
return findmin_order(re,low,high);
//否則使用二分查詢
if(re[mid]>=re[low])
low=mid;
else if(re[mid]<=re[high])
high=mid;
}return re[mid];
}int findmin_order(int re,int low,int high)
return res;
}//思考總結:二分查詢的核心邏輯三大要點
/* 1.什麼樣的區間才會含有所求值,而什麼樣的區間不會含有所求值
2.縮小區間到什麼時候就能找到所求值
3.滿足什麼條件退出查詢
4.其他的特殊情況!!必須做特殊的處理
*/
//問題分析:如果n=10000,顯然即使unsigned long long有心而長度不足,這個使用必須使用字元陣列+
//進製的原理進行解決,即每次按照位數,每次乘以2時逢十進一
void calulator(int n)
result[bit]=temp+'0';//轉換為字元
}if(flag>0)
}if(resnum>max)
throw "max error!";
for(int i=resnum-1;i>=0;--i)catch(const char *e)
}}//輸入33333
//輸出:max error!
//表示最大能夠計算33333次方!!
//演算法時間複雜度分析:假設每乘以4次進一位,則乘以n次,基本運算元為n^2/16+3n+8,
//即時間複雜度為o(n^2)
每日演算法之七 Reverse Integer
reverse digits of an integer.example1 x 123,return 321 example2 x 123,return 321 反轉整形數字,使用取餘取整迴圈即可,但是實際要考察的應該是對可能輸入的考慮是否全面 1 是否為零 2 如果是1200,翻轉後是0021還是...
每日演算法之十九 Valid Parentheses
這個就是檢視括號是否是匹配的。使用stl中的stack是容易實現的。如下 given a string containing just the characters and determine if the input string is valid.the brackets must close ...
每日練習 5
c c 1 clone是fork的公升級版本,不僅可以建立程序或者執行緒,還可以指定建立新的命名空間 namespace 有選擇的繼承父程序的記憶體 甚至可以將建立出來的程序變成父程序的兄弟程序等等 2 引用和多型的關係 引用可以作為產生多型效果的手段 3 include void f char p...