![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法学习
cbib_cat
这个作者很懒,什么都没留下…
展开
-
归并排序
算法思想:归并算法采用分治策略:将原问题划分成n个规模较小而结构与原问题相似的子问题;递归地解决这些问题,然后再合并其结果,就得到原问题的解。分解:将n个元素分成各含n/2个元素的子序列;解决:用归并排序法对两个子序列递归地排序;合并:合并两个已排序好的子序列以得到排序结果。在对子序列排序时,其长度为1时递归结束。单个元素视为是已排好序的。 算法代码:#filena原创 2011-06-18 11:30:00 · 429 阅读 · 0 评论 -
插入排序
算法思想:插入排序的工作机理与很多人打牌时,整理手中牌时的做法差不多在开始摸牌时,我们左手是空的,牌面朝下放在桌上。接着,一次从桌上摸起一张牌,并将它插入到左手一把牌中的正确位置上。为了找到这张牌的正确位置,要求它与手中已有的每一张牌从右到左地进行比较。无论什么时候,左手中的牌都是排序好的,而这些牌原来都是桌上那些牌里最顶上的一些牌。 算法代码:(使用Python语言)#filen原创 2011-06-18 10:41:00 · 476 阅读 · 0 评论 -
快速排序
算法思想: 像归并排序一样,快速排序也是基于分治模式的。对于一个子数组A[p..r]排序的分治过程有如下3个步骤:分解:数组被划分成两个子数组A[p..q-1]和A[q+1..r],使得A[p..q-1]中的元素都小于等于A[q],而且,小于等于A[q+1..r]中的元素。下标q也在这个划分过程中进行计算。解决:通过递归调用快速排序,对子数组A[p..q-1]和A[q+1..r]排原创 2011-06-30 08:39:00 · 456 阅读 · 0 评论 -
计数排序
算法思想:对每一个输入元素x,确定小于x的元素个数。有了这一信息,就可以把x直接放到它在最终输出数组的位置上。例如有17个元素小于x,则x就属于第18个输出的位置。 算法代码:#filename Counting_Sort.py 计数排序def Counting_Sort(SrcArray, k): length = len(SrcArray) #C用来Sr原创 2011-06-30 19:43:00 · 368 阅读 · 0 评论 -
堆排序
算法思想: 堆:数据结构是一种数组对象,它可以被视为一种完全二叉树。Length[A]是数值中元素的个数,heap-size[A]是存放在A中堆的元素个数。就是说,A[1...heapSize[A]]中的元素属于堆,其后面的元素不属于堆。 大顶堆:除了叶子节点外,每个父节点的值均大于左右子节点的值。小顶堆类似。 堆排序时,首先需要将输入数组构造成一个最大堆:如代码中Build_MaxHeap函数。原创 2011-06-28 19:52:00 · 480 阅读 · 2 评论