二分尋找真的很容易錯_二分尋找

來源:互聯網
上載者:User
int *bsearch(int data[], int n, int x)                                          {                                                                                   int *p_rslt = NULL;                                                             int *p_start = data;                                                            int *p_mid = NULL;                                                              int *p_end = data + n;                                                                                                                                          if ((NULL == data) || (n < 1)) {                                                    goto EXIT;                                                                  }                                                                                                                                                               while (p_start < p_end) {                                                           p_mid = p_start + (p_end - p_start) / 2;                                                                                                                        if (*p_mid > x) {                                                                   p_end = p_mid;                                                              } else if (*p_mid < x) {                                                            p_start = p_mid + 1;                                                        } else {                                                                            p_rslt = p_mid;                                                                 break;                                                                      }                                                                           }                                                                                                                                                           EXIT:                                                                               return p_rslt;                                                              }


PS1: 第一個二分尋找程式在1946年已經公布,但是到了1962年才出現第一個沒有BUG的二分尋找程式
PS2: 迴圈不變式
PS3: 測試了很多邊界情況,現在依然沒把握說一定沒錯,如有錯請指正,3Q。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.