![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
分治
Eighteen__
这个作者很懒,什么都没留下…
展开
-
二分查找(c++)
二分查找二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。它充分利用了元素间的次序关系,采用分治策略,可在最坏的情况下用O(log n)完成搜索任务。它的基本思想是:(这里假设数组元素呈升序排列)将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算法终止;如 果x<a[n/2],则我们只要在数组a的左半部继续搜索x;如果x>a[n/2],则我原创 2020-10-25 19:10:26 · 13043 阅读 · 1 评论 -
归并排序(c++)
归并排序归并排序(Merge Sort)是建立在归并操作上的一种有效,稳定的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。归并操作,也叫归并算法,指的是将两个顺序序列合并成一个顺序序列的方法。如 设有数列{6,202,100,301,38,8,1}初始状态:6,202,100,301,38,8,1第一次归并后:{6,202},原创 2020-10-25 01:05:51 · 145 阅读 · 0 评论 -
快速排序(c++)
1、快速排序的思想快速排序就是给基准数据找在数组中正确位置的过程,一旦基准位置的正确位置找到,那基准位置左右两边经过同样的步骤递归也可以有序,最终整体数组有序。整体可以理解为三个步骤:1、先从队尾开始向前扫描且当l < r时,如果a[r] > temp ,则r – ,如果a[r] < temp ,则将r的值赋给l, 即a[l] = a[r] ,赋值后必转换扫描方向,即从队首向队尾扫描 ;2、从队首向队尾扫描时且当l < r, 如果a[l] < temp , 则l ++原创 2020-10-24 22:55:01 · 108 阅读 · 0 评论