第一件事,排序。(下面默认为非递减排序情况下的操作)
然后去整个数列的中间一个元素同x比较,如果大,更新搜索范围为0~n/2-1
如果相等,返回结果为n/2
如果小于,更新搜索范围为n/2~n
递归循环啦。
那么具体的二分代码,你可以百度一下,“X语言 二分搜索”(X语言就是你会的哪一种编程语言)。。。要注意的是,本题中你要的是查询“
中小于等于x的数中最大的”,不是查询“有没有这个数”,所以除非给定序列最小的一个都比x大,否则都不会返回-1.只要返回最接近的数所在数组下标即可,然后在主函数里输出。