《C程式語言》練習 3 1

2021-08-14 04:46:42 字數 1430 閱讀 5880

練習 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 補充知識點 在計算機系統中,數值一律用補碼來表示和儲存。原因在於,使用...