上一篇博客在昨天上热榜了(〃'▽'〃),所以我打算再写一篇
今天介绍两个比较基础的算法,冒泡排序和二分查找
目录
冒泡排序
冒泡排序是排序算法的一种,主要作用就是将无序的元素变成有序
冒泡排序运用
假设有一个数组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的值的变化实现
结尾
冒泡排序和二分查找就介绍到这,不足的地方欢迎指正