二分法查找该成绩在班级中的排名

 

从数组中间向两侧搜索

int fun(int a[],int n,int x)
{
    int low = 0;
    int height = n-1;
    while(low <= high)
    {
        int mid = (low + high)/2;
        if(x == a[mid])
        {
            return mid;
        }
        else if(x< a[mid])
        {
            high = mid - 1;
        }
        else
        {
            low = mid + 1;
        }
    }
    return -1;
}

 

如果数组无序,需要先排列为有序的

假设现在数组元素从小到大排列,那么根据n将数组从中间分为两部分,然后将x与中间的数比较,若小于,则在右边查找,大于就在左边,然后一直分下去就好了,直至查找失败或查找到指定元素