冒泡排序和二分查找

上一篇博客在昨天上热榜了(〃'▽'〃),所以我打算再写一篇

 今天介绍两个比较基础的算法,冒泡排序和二分查找

目录

冒泡排序

冒泡排序运用

二分查找

二分查找运用

结尾


冒泡排序

冒泡排序是排序算法的一种,主要作用就是将无序的元素变成有序

冒泡排序运用

假设有一个数组arr, 我想让arr中的元素升序排列

int arr[10]={2,6,9,8,5,12,24,13,7,10}

首先arr[0]和arr[1]比较,若arr[0]>arr[1]则二者的值进行交换,然后arr[0]再和arr[2]比较,arr[0]>arr[2]时再次交换二者的值,当arr[0]和数组其它元素都比较完之后arr[0]的值便是元素中最小的值,之后的arr[1]、arr[2]等重复此操作,当所有元素都比较完时得到的数组就是升序排列好的数组。

冒泡排序代码实现

二分查找

二分查找使用的前提是元素的排列必须是有序的,若元素排列无序则不可使用

二分查找运用

以上述已经排列好的数组为例,假设我们要找数字5是否在数组内,是则输出对应的下标

int arr[10]={2,5,6,7,8,9,10,12,13,24}

 一般情况下使用for循环遍历可以解决,但如果数组元素个数很多呢,如果arr里的元素不是10个而是1000个,那么最坏的情况下可能要执行1000次循环。

那二分查找怎么做?

首先将5和数组中间的元素arr[4]比较,arr[4]>5,那么查找的范围就可以缩小至arr[0]~arr[3],

再让5和缩小后的范围的中间值arr[2]比较,arr[2]>5,再次缩小范围,arr[0]~arr[1]

再次让5和缩小后的范围的中间值arr[0]比较,arr[0]<5,再次缩小范围arr[1]

arr[1]=5,此时便找到了5在数组的位置,下标为1

代码实现

 left和right分别表示数组的下限和上限,二分查找中范围不断缩小通过left和right的值的变化实现

结尾

冒泡排序和二分查找就介绍到这,不足的地方欢迎指正

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星鸦wyk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值