回覆列表
  • 1 # 讓跑步更有力量

    #include<stdio.h>

    int seek(int * pArr,int low,int high,int num);

    void main()

    {

    int Arr[]={1,2,3,4,5,6,7,8,9,10};

    int find,num;

    printf("input a num to be found.\n");

    scanf("%d",&num);

    find = seek(Arr,0,9,num);

    if (find == -1) printf("num=%d not found!\n",num);

    else printf("num has been found!\nArr[%d] = %d\n",find,Arr[find]);

    }

    int seek (int *pArr,int low,int high,int num)

    {//pArr 為陣列名,該陣列必須是排好序了(這是二分法的要求),這裡按從小到大排序

    int mid;

    mid = (low+high)/2;

    if ((low>=high)&&(pArr[mid]!=num))

    return -1;

    else

    {

    if (pArr[mid]==num)

    return mid;

    else if (pArr[mid]>num)

    high = mid+1;//中間數字比要查的數還大,說明可能在中間段以前

    else

    low = mid-1;//同上,可能在中間段以後

    return seek(pArr,low,high,num); //遞迴

    }

    }

  • 中秋節和大豐收的關聯?
  • 材料類專業考研如何?考什麼研究生專業好?