卡罗之常用算法
懵懵懂懂的小晨
这个作者很懒,什么都没留下…
展开
-
堆排序解剖
堆排序算法介绍堆是一种数据结构,可以把堆看成一棵完全二叉树,这棵完全二叉树满足:任何一个非叶结点的值都不大于(或不小于)其左右孩子结点的值。若父亲大孩子小,叫大顶堆;若父亲小孩子大,则这样的堆叫做小顶堆。二叉树:每个结点最多只有两棵子树,即二叉树中结点的度只能为0、1、2。子树有左右之分,不能颠倒。满二叉树:在一棵二叉树中,如果所有的分支结点都有左孩子和右孩子结点,并且叶子结点都集原创 2017-04-12 20:16:02 · 281 阅读 · 0 评论 -
归并排序解剖
归并排序归并排序描述归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divideand Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。算法思想1、划分:将待排序序列划分为两个长度相等的子序列。2、求解子问题:分原创 2017-04-13 15:56:55 · 369 阅读 · 0 评论 -
各排序算法分类以及复杂度分析
一、 稳定性稳定性是指待排序的序列中有两个或者两个以上相同的项,排序前和排序后,看这些相同的项的相对位置有没有没发生变化,如果没有发生变化,就是稳定的;如果发生变化,就是不稳定的。二、 排序分类以及复杂度1. 插入类排序直接插入排序最坏时间复杂度:O(n^2)最好时间复杂度:O(n)平均时间复杂度:O(n^2)空间复杂度:O(1)折半插入排序原创 2017-04-13 17:28:21 · 381 阅读 · 0 评论 -
直接插入排序解剖
直接插入排序解剖算法介绍插入排序基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。算法思想 每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。算法代码(Java) * 泛型 直接插入插入排序 * @p原创 2017-04-17 16:14:29 · 387 阅读 · 0 评论 -
冒泡排序解剖
冒泡排序解剖算法介绍冒泡排序是通过一系列的“交换”动作完成的,是交换类排序的一种。首先第一个记录和第二个记录比较,如果第一个大吗,则两者交换,否则不交换;然后第二个记录和第三个记录比较,如果第二个大,则两者交换,否则不交换……一直按这种方式进行下去,最终最大的那个记录被交换到了最后,一趟冒泡排序完成。然后进行第二趟冒泡排序,对前n-1个记录进行同样的操作,使关键字次大的记录被安原创 2017-04-17 16:17:40 · 290 阅读 · 0 评论 -
快速排序解剖(递归)
算法介绍和思想快速排序是对冒泡排序的一种改进,它也是“交换”类排序的一种。它的基本思想是,通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。算法过程和步骤一趟快速排序的具体做法是:附设两个指针low和high,它们的初值分别为low和high,设枢轴记录的关键字为pivotkey,则首先从原创 2017-07-06 11:37:58 · 563 阅读 · 0 评论 -
各类排序算法总结(Java代码实现)
一、 稳定性稳定性是指待排序的序列中有两个或者两个以上相同的项,排序前和排序后,看这些相同的项的相对位置有没有没发生变化,如果没有发生变化,就是稳定的;如果发生变化,就是不稳定的。二、 排序分类以及复杂度2.1、 插入类排序2.1.1、直接插入排序最坏时间复杂度:O(n^2)最好时间复杂度:O(n)平均时间复杂度:O(n^2)空间复杂度:O(1)原创 2017-07-07 15:39:51 · 446 阅读 · 0 评论