亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標題: c寫的一個折半查找函數(shù),代碼有錯誤嗎? [打印本頁]

作者: joychenke    時間: 2014-11-06 15:30
標題: c寫的一個折半查找函數(shù),代碼有錯誤嗎?
本帖最后由 joychenke 于 2014-11-06 15:32 編輯

代碼如下,想問下,for語句的自加部分,可以用條件表達式的三元運算符“?:”來實現(xiàn)嗎?謝謝。
  1. int binsearch(int x,int v[],int n)
  2. {
  3.         int low,high,mid;
  4.         low=0;
  5.         high=n-1;
  6.         for(mid=(high+low)/2;low<=high;(x>v[mid]?(low=mid+1):(high=mid-1)))
  7.         {
  8.                 if(x==v[mid])
  9.                         return mid;
  10.        
  11.         }
  12.                 return -1;               

  13. }
復制代碼

作者: ilex    時間: 2014-11-06 17:28
如果是學生,無所謂;

如果工作了,專業(yè)坑隊友!
作者: shang2010    時間: 2014-11-06 17:42
同意樓上,貌似隊友只要把代碼copy一下測試好不就可以了么
作者: wangspace    時間: 2014-11-06 18:58
  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. int binsearch(int x, int v[], int n)
  4. {
  5.     int low, high, mid;
  6.    
  7.     low = 0;
  8.     high = n-1;
  9.     while(low < high) {
  10.         mid = (low + high) / 2;
  11.         if(x <= v[mid])
  12.             high = mid;
  13.         else
  14.             low = mid+1;
  15.     }
  16.     return (x == v[low]) ? low : -1;
  17. }

  18. int main(int argc, char *argv[])
  19. {
  20.     int v[5] = {3, 6, 9, 12, 4};
  21.     int x = 36;
  22.     printf("%d\n", binsearch(x, v, 5));
  23.     return EXIT_SUCCESS;
  24. }
復制代碼

作者: 1210603696    時間: 2014-11-06 21:17
mid=(high+low)/2 可能會溢出
作者: wangspace    時間: 2014-11-06 21:43
回復 5# 1210603696


為啥
   
作者: yzrzxp    時間: 2014-11-07 11:21
這算是在坑同事了
作者: Susake_    時間: 2014-11-07 13:15
用c/c++庫里面的吧~




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2