- 博客(4)
- 收藏
- 关注
原创 3.二分查找
二分查找算法功能输入输出算法步骤关键点案例一:AcWing 789. 数的范围输入输出步骤案例二:AcWing 790. 数的三次方根输入输出步骤算法功能查找有序数组中的某个元素的下标输入输出输入输出最左元素下标:l目标元素的下标:l最右元素下标:r数组:a[]算法步骤红色区域的右边界值找中间值 mid = (l+r+1)/2int mid = l + r + 1 >> 1;//如果不加上1,那么mid得到的是下取整的数//那
2022-02-14 10:54:46 403
原创 3.归并排序
算法思想是什么?从中间断开,然后合并算法步骤是什么?1.确定分界点,mid=(1+r)/22.递归排序left、right3.归并-合二为一算法代码是什么?#include <iostream>using namespace std;const int N = 1e5 + 10;int a[N], tmp[N];void merge_sort(int q[], int l, int r){ if (l >= r) return;
2022-02-12 21:54:14 423
原创 2.第k个数(快速排序选择)
算法思想是什么?快速排序,个数是位数的象征,第k个数始终在个数多的那一边。算法步骤是什么?1.不管三七二十一先找个目标X分两边,此时X左边都<=X,右边>=X,也就能确定目标X在数列中的真实位置。2.查看k是否<左边个数,如果小于说明在左侧内,左侧递归排序再找到K就OK,反之在右边。例:第三位要在第七位前面找。3.最终无限夹击找到K。算法代码是什么?#include <iostream>using namespace std;const int
2022-02-10 16:59:52 677
原创 1.快速排序(双指针法)
算法思想是什么?分治算法步骤是什么?1.选择数组中的第一个元素arr[startIndex]作为轴(pivot)2.左指针为left,从最左边开始寻找第一个比pivot大的数3.右指针为right,从最右面的一个元素开始向左寻找第一个小于等于pivot的数值4.经过2,3两个步骤后,将会出现以下两种情况 (1):left和right没有相遇,此时进行交换,swap(arr,left,right); (2):left和right相遇,做swap(arr,startIndex
2022-02-10 14:52:08 2223 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人