練習 3-1
在上面有關折半查詢的例子中,while 迴圈語句內共執行了兩次測試,其實
只要一次就足夠(代價是將更多的測試在迴圈外執行)。重寫該函式,使得在迴圈內部只執行
一次測試。比較兩種版本函式的執行時間。
原文**有乙個問題,下面是改過的原文**
int binsearch(int x, int v, int n)
return -1; /* no match */
}
自己寫的**
感覺沒改什麼
int binsearch2(int x, int v, int n)
if (v[mid] == x)
return mid; //找到了,返回下標
else
return -1; //沒找到,返回-1
}
while括號內的條件看起來不太友好,也可以這樣寫
int binsearch2(int x, int v, int n)
if (v[mid] == x)
return mid; //找到了,返回下標
else
return -1; //沒找到,返回-1
}
或者裝b一點
int binsearch2(int x, int v, int n)
這個三目不用考慮 x == v[mid] 的情況,
因為等於的話迴圈就結束了,high和low的值是什麼都無所謂
完整** :
/*練習 3-1 在上面有關折半查詢的例子中,while 迴圈語句內共執行了兩次測試,其實
只要一次就足夠(代價是將更多的測試在迴圈外執行)。重寫該函式,使得在迴圈內部只執行
一次測試。比較兩種版本函式的執行時間。*/
#include
#define max 10000 //陣列長度
int binsearch(int x, int v, int n);
int binsearch2(int x, int v, int n);
main()
/* binsearch: find x in v[0] <= v[1] <= ... <= v[n-1] */
int binsearch(int x, int v, int n)
return -1; /* no match */
}int binsearch2(int x, int v, int n)
if (v[mid] == x)
return mid; //找到了,返回下標
else
return -1; //沒找到,返回-1
}
C程式語言 3 1
練習3 1 在上面有關折半查詢的例子中,while迴圈語句內共執行了兩次測試,其實只要一次就足夠 代價是將更多的測試在迴圈外執行 重寫該函式,使得在迴圈內部只執行以此測試。比較兩種版本函式的執行時間。我一開始是沒想出來的,所以去網上看了看,發現網上有些 無法執行但思路是對的,所以重新改了改發出來。i...
C語言程式設計練習
1 給你任意三個整形資料,找出其中最大乙個整形數。include main int findmax int x,int y,int z else if z max return max 使用函式 三目運算子 include int main int findmax int x,int y 2 求1 ...
c語言程式設計練習
練習 賬號 taylent problem 2000 ascii碼排序 problem description 輸入三個字元後,按各字元的ascii碼從小到大的順序輸出這三個字元。includeint main return 0 補充知識點 在計算機系統中,數值一律用補碼來表示和儲存。原因在於,使用...