<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Geometry2的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Geometry2</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Geometry2]]></copyright><item><title><![CDATA[3.二分查找]]></title><link>https://blog.youkuaiyun.com/Geometry2/article/details/122911980</link><guid>https://blog.youkuaiyun.com/Geometry2/article/details/122911980</guid><author>Geometry2</author><pubDate>Mon, 14 Feb 2022 10:54:46 +0800</pubDate><description><![CDATA[二分查找算法功能输入输出算法步骤关键点案例一：AcWing 789. 数的范围输入输出步骤案例二：AcWing 790. 数的三次方根输入输出步骤
算法功能
查找有序数组中的某个元素的下标
输入输出




输入
输出




最左元素下标：l
目标元素的下标：l


最右元素下标：r



数组：a[]



算法步骤

红色区域的右边界值



找中间值 mid = (l+r+1)/2

int mid = l + r + 1 &gt;&gt; 1;//如果不加上1，那么mid得到的是下取整的数
//那]]></description><category></category></item><item><title><![CDATA[3.归并排序]]></title><link>https://blog.youkuaiyun.com/Geometry2/article/details/122902483</link><guid>https://blog.youkuaiyun.com/Geometry2/article/details/122902483</guid><author>Geometry2</author><pubDate>Sat, 12 Feb 2022 21:54:14 +0800</pubDate><description><![CDATA[算法思想是什么？

从中间断开，然后合并

算法步骤是什么？

1.确定分界点，mid=（1+r）/2

2.递归排序left、right

3.归并-合二为一

算法代码是什么？


#include &lt;iostream&gt;

using namespace std;

const int N = 1e5 + 10;

int a[N], tmp[N];

void merge_sort(int q[], int l, int r)
{
    if (l &gt;= r) return;

 ]]></description><category></category></item><item><title><![CDATA[2.第k个数（快速排序选择）]]></title><link>https://blog.youkuaiyun.com/Geometry2/article/details/122862462</link><guid>https://blog.youkuaiyun.com/Geometry2/article/details/122862462</guid><author>Geometry2</author><pubDate>Thu, 10 Feb 2022 16:59:52 +0800</pubDate><description><![CDATA[算法思想是什么？

快速排序，个数是位数的象征，第k个数始终在个数多的那一边。

算法步骤是什么？

1.不管三七二十一先找个目标X分两边，此时X左边都&lt;=X，右边&gt;=X，也就能确定目标X在数列中的真实位置。
2.查看k是否&lt;左边个数，如果小于说明在左侧内，左侧递归排序再找到K就OK，反之在右边。例：第三位要在第七位前面找。
3.最终无限夹击找到K。

算法代码是什么？


#include &lt;iostream&gt;

using namespace std;

const int]]></description><category></category></item><item><title><![CDATA[1.快速排序（双指针法）]]></title><link>https://blog.youkuaiyun.com/Geometry2/article/details/122851070</link><guid>https://blog.youkuaiyun.com/Geometry2/article/details/122851070</guid><author>Geometry2</author><pubDate>Thu, 10 Feb 2022 14:52:08 +0800</pubDate><description><![CDATA[算法思想是什么？

分治

算法步骤是什么？

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]]></description><category></category></item></channel></rss>