c語言程式的經典與否很大在於演算法是否經典,這一節開始朱兆祺帶領大家學習c語言演算法篇。
就拿二分查詢下手。
// text.cpp : 定義控制台應用程式的入口點。
//#include "stdafx.h"
int binaryseach(int *iarray, int key, int n)
else if (iarray[imid] < key) else}}
//測試程式
int main(int argc, char* argv)
;printf("%d\n" , binaryseach(a,6,10));
return 0;
}遞迴呼叫就是函式對自身的呼叫,但是一定要慎重使用,遞迴涉及到棧是否會溢位等問題,還有就是演算法是否合適,並非說任何時候都是適合的。
我記得譚浩強的《c……》中用遞迴演算法來解決階乘的問題,我就疑惑了,使用迴圈解決豈不是更簡單明瞭。
演算法之二分查詢
總時間限制 1000ms 記憶體限制 65536kb 描述在乙個非降序列中,查詢與給定值最接近的元素。輸入第一行包含乙個整數n,為非降序列長度。1 n 100000。第二行包含n個整數,為非降序列各元素。所有元素的大小均在0 1,000,000,000之間。第三行包含乙個整數m,為要詢問的給定值個數...
演算法之二分查詢
二分查詢演算法是運用分治策略的典型例子。給定一組已經排好序的n個元素a n 從這n個元素中找到乙個特定元素x。基本思想 將n 個元素劃分成個數大致相同的兩部分,取中間元素a n 2 與x進行比較 如果x a n 2 即找到x,演算法終止 如果x如果x a n 2 則只在陣列a的右半部分繼續查詢x。c...
演算法之二分查詢
二分查詢針對的是乙個有序的資料集合,查詢思想有點類似分治思想,每次都通過跟區間的中間元素對比,將待查詢的區間縮小為之前的一半,直到找到想要查詢的元素,或是區間被縮小為0。二分查詢的時間複雜度為o l ogn o logn o logn l og nlogn logn 是乙個非常恐怖的數量級,即使n非...