![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
algorithm
loredp
这个作者很懒,什么都没留下…
展开
-
排序算法-快速排序
今天讲下,效率比较高的快速排序:总的来说,快速排序讲究的是一种分而治之。先选取一个初始值,从左右两边逐一进行比较,直到起始的index>=end,一次比较结束,然后再在两边的集合里面再做如上的比较,也就是我们常做的递归操作。例如:{49,38,65,97,5}1.首先选取初始值49,从5开始比较,52.当前的位置时4,再从左边比较小的,到65时替换为{5,38,49,97,65}3原创 2016-03-16 17:00:04 · 347 阅读 · 0 评论 -
排序算法-堆排序
学习堆排序之前先了解下什么是二叉堆:二叉堆是完全二叉树或者是近似完全二叉树。二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。2.每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。当父结点的键值总是大于或等于任何一个子节点的键值时为最大堆。当父结点的键值总是小于或等于任何一个子节点的键值时为最小堆。一般如果我们用数组来表示堆(即堆的存储),i节点原创 2016-03-30 08:45:28 · 404 阅读 · 0 评论 -
排序算法-冒泡
今天开始回顾下以前学习的东西了,首当其冲的就是几种常见的算法了:冒泡排序,选择排序,以及插入排序冒泡排序冒泡排序顾名思义,将比较之后的结果像泡泡一样往上移动。首先举个例子:{49,38,65,97,5},冒泡排序的步骤分为如下:(1)49与38比较,交换位置{38,49,65,97,5}(2)49与65比较不需要交换(3)65与97比较也不需要比较(4)97与5比较交换位置原创 2016-03-14 14:01:50 · 347 阅读 · 0 评论 -
排序算法-选择与插入排序
今天主要复习下选择排序以及插入排序:1.选择排序:(百度百科的定义)每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。个人的理解:选择排序就是选择最小的数据放在前面,也是我们最直观的排序方式,举例如下{49,38,65,97,5}:选择最小的数据5,排在最前面,交换位置{5,38,65,97原创 2016-03-15 15:37:36 · 366 阅读 · 0 评论 -
排序算法-归并排序
归并排序,从字面上意思就可以得知它是分治法的一种,将两个已经排好的数组进行归并到一个数组,直接贴代码吧,这样比较清晰public static void mergearrayv1(int a[], int first, int mid, int last, int temp[]) { int i = first, j = mid + 1; int m = mid原创 2016-04-14 20:49:51 · 337 阅读 · 0 评论 -
排序算法-希尔排序
希尔排序:也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。所以希尔排序的实质就是分组插入排序。分组进行插入排序,有些人可能觉得这样不是增加了插入排序的次数了么?其实不然,我哦们知道插入排序的效率取决于原始集合有序,所以只要我们在最后进行插入排序时增加了有序的个数,那对插入排序来说就减少了交换的次数。所以这个排序也最简单:在循环步长之后,再进行插入排序:原创 2016-04-24 21:00:41 · 336 阅读 · 0 评论