冒泡法和折半法检验半天还是运行错误结果

以下为我的代码,看了2个小时没找出问题.....用的VS2017---求求大伙看看
#include "stdio.h"
 main()
{
    int i, j, k, a[10];
    printf("输入要排序的数");
    for (i = 0;i < 10;i++)
    {
        scanf_s("%d", &a[i]);
    }
    for (i = 0;i < 9;i++)
    {
        for (j = 0;j < 9-i;j++)
        {
            if (a[i] > a[i + 1])
            {
                k = a[i];
                a[i] = a[i + 1];
                a[i + 1] = k;
            }
        }
    }
    for (i = 0;i < 10;i++)
    {
        printf("----%d", a[i]);
    }
}

#include "stdio.h"
main()
{
    int a[10], i, k;
    int high=9, low=0, mid=(low+high)/2;
    printf("输入要查找的数");
        scanf_s("%d",&k);
        printf("输入数据");
        for(i=0;i<10;i++)
    scanf_s("%d", &a[i]);
    while (low <=high)
    {
        if (a[mid] > k)
        {
            high = mid - 1;
        }
        if (a[mid] < k)
        {
            low = mid + 1;
        }
         if (a[mid]==k)
        {
            printf("在里面");
            break;
        }
        else { 
             printf("buzai"); 
             break; }
    }
}
 

不在里面为什么要急于跳出循环

可是去掉break会一直打印不在,是我系统的问题吗?