C++排序二分查找

简单来说就是输入一个数组,注意是无序的,因为二分查找只能查找有序的,所以在给数组赋值之后,对数组进行排序。排序的方法有很多,在此我写的是冒泡排序,排序之后是降序的。
在这里插入图片描述
其中bubblesort(int array[],int length),length代表数组长度,int array[]可以替换成int * array ,没有影响。

对于降序,C++sort函数有着很好的应用。 在此给出链接,这位大佬写的非常好 https://blog.csdn.net/liuzuyi200/article/details/8974326。
我自己也写了两种,如下。
1如图,sort排序,greater是降序,less是升序。C++用sort别忘了加#include<algorithm>
在这里插入图片描述
2.自己编写比较函数,因为sort(array,array+N)默认是升序的,要降序得自己写一个比较函数。
在这里插入图片描述
降序return a>b,升序return a<b.

好了说完排序,该进入二分查找。
在这里插入图片描述
在这里插入图片描述
切记二分查找的升序和降序写法是不一样的,要改一下循环里面的代码!!!
查找完如果存在元素输出下标,不存在即告知用户,输出提示信息。

鉴于每次都自己写二分查找可能会出错,所以可以使用C++ STL中的binary_search. 划重点: STL中的二分查找只适用于升序! 降序不能用!!
在这里插入图片描述
binary_search(array,array+N,key);
array代表数组首地址,
array+N代表数组首地址加数组元素个数,
最后一个是要查找的值
返回值类型为bool,也可以转成int,找到为真返回1,没找到为假返回0。

但binary_search只能检测数组里有没有这个元素,只能告诉你结果是有还是没有,有的话是无法输出元素下标的。

关于数组也可以使用容器vector,方法有很多,暂时先写到这。谢谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值