算法
我就是不敲代码鸭.
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
分治策略------棋盘覆盖(ChessBoard)
棋盘覆盖原理棋盘覆盖运用的是分治策略。1.分治的技巧在于如何划分棋盘,使划分后的子棋盘的大小相同,并且每个子棋盘均包含一个特殊方格,从而将原问题分解为规模较小的棋盘覆盖问题。2.k>0时,可将2k×2k的棋盘划分为4个2(k-1)×2(k-1)的子棋盘。这样划分后,由于原棋盘只有一个特殊方格,所以,这4个子棋盘中只有一个子棋盘包含该特殊方格,其余3个子棋盘中没有特殊方格。3.为了将这3个没有特殊方格的子棋盘转化为特殊棋盘,以便采用递归方法求解,可以用一个L型骨牌覆盖这3个较小棋盘的会合处,从而原创 2020-05-14 18:32:21 · 2616 阅读 · 0 评论 -
二分技术(BinaryTechnology)
二分搜索技术(Binary Search)二分搜索技术是运用分治策略的典型例子。二分搜索技术的基本思想是,将n个元素分成两半,取要查找的数x和a [n / 2]进行比较。当 x = a [n / 2],查找结束,算法终止。当 x > a [n / 2],在数组的右半部分继续搜索 x。当 x < a [n / 2],在数组的左半部分继续搜索 x。template<class Type>int BinarySearch(Type a[], const Type&原创 2020-05-11 00:32:38 · 295 阅读 · 0 评论 -
归并排序(Mergesort)
归并排序是基于分治策略的一种排序算法。归并排序基本思想是:将待排序的元素分成大小大致相同的两个子集合,分别对两个字集合进行排序,最终将排好序的子集合序列合并成要求的排好序集合。合并算法可递归描述如下:template<class Type>void MergeSort(Type a[], int left, int right){ if(left < rig...原创 2020-05-09 13:55:04 · 1276 阅读 · 0 评论 -
快速排序(Quicksort)
快速排序是基于分治策略的另一种排序算法。快速排序(1)基本思想是,对于输入的数组a[p : r]按照分解,递归求解,合并三个步骤进行排序。分解:以a[p : r]中的p为基准将原数组分成三段,分别是a[p : q - 1],a[q],a[q + 1:r]。下标q在划分过程中确定。void QuickSort(Type a[], int p, int r){ if(p < ...原创 2020-05-07 00:19:16 · 1106 阅读 · 0 评论
分享