- 论坛徽章:
- 2
|
注释外的代码怎么可能正确?
另:C没有elseif关键字;LZ的代码缺少不存在时的退出条件。
- int bsearch(int a[], int left, int right, int key){
- int mid;
- if(left > right){
- return -1;
- }
- mid = (left + right)/2;
- if(key > a[mid]){
- return bsearch(a, mid + 1, right, key);
- }else if(key < a[mid]){
- return bsearch(a, left, mid - 1, key);
- }
- return mid;
- }
- #define ALEN(a) (sizeof(a)/sizeof((a)[0]))
- #include <stdio.h>
- int main(void){
- int a[] = {
- 10,
- 11,
- 30,
- 50,
- 80,
- 99
- };
- int n;
- int i;
- printf("array:");
- for(i = 0; i < ALEN(a); i++){
- printf(" %d", a[i]);
- }
- printf("\n");
- n = 10;
- i = bsearch(a, 0, ALEN(a) - 1, n);
- printf("search %d at index %d of the array\n", n, i);
- n = 99;
- i = bsearch(a, 0, ALEN(a) - 1, n);
- printf("search %d at index %d of the array\n", n, i);
- n = 50;
- i = bsearch(a, 0, ALEN(a) - 1, n);
- printf("search %d at index %d of the array\n", n, i);
- n = 3;
- i = bsearch(a, 0, ALEN(a) - 1, n);
- printf("search %d at index %d of the array\n", n, i);
- return 0;
- }
复制代码 |
|