N个有序整数数列已放在一维数组中,利用二分查找法查找整数m在数组中的位置,若找到,则输出其下标值;反之,则输出 “Not be found”

来源:互联网 发布:java attribute用法 编辑:程序博客网 时间:2024/05/01 12:59
#include <stdio.h>
#define N 10

/*
N个有序整数数列已放在一维数组中,利用二分查找法查找整数m在数组中的位置,若找到,则输出其下标值;反之,则输出 “Not be found”
*/
int main()
{
    int i;
    int low = 0;
    int high = N - 1;
    int mid;
    int k = -1;
    int m;
    int a[N] = {-3,4,7,9,13,45,67,89,100,180};

    printf("数组中的数据如下:\n");
    for(i = 0; i < N; i++)
    {
        printf("%4d  ",a[i]);
    }
    printf("\n");

    printf("请输入您想要查找得数字:");
    scanf("%d",&m);
   
    while(low <= high)
    {
        mid = (low + high) / 2;
 if(m < a[mid])
 {
     high = mid - 1;
 }
 else
 {
     if(m > a[mid])
     {
         low = mid + 1;
     }
     else
     {
         k = mid;
  break;
     }
 }
    }

    if(k >= 0)
    {
        printf("wei zhi shi %d,zhishi %d\n",k,m);
    }
    else
    {
        printf("Not find !\n");
    }

    return 0;
}
1 0
原创粉丝点击