
数据结构与算法
文章平均质量分 74
SecondJanuary
这个作者很懒,什么都没留下…
展开
-
排序专题(三) / 稳定的内部排序 / 递归的2-路归并排序
递归的2-路归并排序平均时间复杂度:O(nlogn) 算法思想,见图:递归实现很简单,发帖出来一定程度上只是为了保证这个排序专题的完整性,望勿拍 直接上code: public class MergeSort { /* * Merge these two parts : * "fromIndex --> splitPoint"原创 2013-01-17 23:45:07 · 791 阅读 · 0 评论 -
排序专题(七) / 不稳定的内部排序 / 选择排序
选择排序思想再简单不过了,从空序列逐渐构建有序序列,每次从无序序列中选择最大 / 最小的元素放在有序序列的后面就OK了,直至得到整个有序序列,直接上codepublic class SelectionSort { public static void selectionsort(int[] array) { if (array.length <=原创 2013-01-30 17:57:41 · 861 阅读 · 0 评论 -
排序专题(一) / 稳定的内部排序
1.冒泡排序(Bubble Sort)思想:众所皆知,无需多言 平均时间复杂度:O(n2)public class BubleSort { public static void bubleSort(int[] array) { if (array.length <= 1) { return; } els原创 2013-01-16 23:02:40 · 1650 阅读 · 0 评论 -
排序专题(二) / 稳定的内部排序 / 二叉排序树
二叉排序树还是很容易理解的,无需多讲解,定义:若左子树不空,则左子树上所有结点的值均小于它的根结点的值 若右子树不空,则右子树上所有结点的值均大于它的根结点的值 左、右子树也分别为二叉排序树 代码较多,注释较少,不过还是比较易懂的,但逻辑不一定是最简洁的 Code除delete()方法外,其它都经过UT测试 方法列表:获取树中元素总个数,重复元素也计数:public int s原创 2013-01-17 01:16:54 · 869 阅读 · 0 评论 -
排序专题(四) / 不稳定的内部排序 / 堆排序
堆的定义前置定义完全二叉树完全二叉树是这样一棵树:设此树的高度为h,除第h层外,其它各层(1~h-1)的结点数都达到最大个数(2i-1),第h层所有的结点都连续集中在最左边。满二叉树(满二叉树在国内国外的定义是不同的)国内定义:设一个二叉树的高度为h,若其有2h-1个结点,则其为满二叉树。(显然,叶子结点只可能出现在第h层,且除叶子结点外的其它结点都有两个子节点原创 2013-01-30 16:16:31 · 1578 阅读 · 0 评论 -
排序专题(五) / 不稳定的内部排序 / 梳排序(Comb Sort)
时间复杂度:O(nlogn)梳排序改良自冒泡排序和快速排序,其旨在于消除乌龟,即在阵列尾部的小数值,这些数值是造成泡沫排序缓慢的主因。相对地,兔子,即在阵列前端的大数值,不影响冒泡排序的效能。在冒泡排序中,只比较阵列中相邻的二项,即比较的二项的间距(Gap)是1,梳排序提出此间距其实可大于1,改自插入排序的希尔排序同样提出相同观点。梳排序中,开始时的间距设定为阵列长度,并在循环中以固定比率递减,通原创 2013-01-30 16:45:07 · 1147 阅读 · 0 评论 -
排序专题(六) / 不稳定的内部排序 / 递归 | 非递归的快速排序
时间复杂度:O(nlogn)无论是递归的还是非递归的快速排序,其关键都是partition方法,每一次partition后,都会找到原序列的pivot(枢轴)索引,且位于pivot索引上的元素一定处于整个最终有序序列它应该位于的正确位置上,显然partition后找到的pivot索引会将原序列不断分裂成两个子序列。如此:所有元素都会找到自己最终应该处于的正确位置,这样整个序列便会有序。原创 2013-01-30 17:41:29 · 640 阅读 · 0 评论 -
排序专题(八) / 不稳定的内部排序 / 希尔(shell)排序
时间复杂度:shell排序时间复杂度取决于所选取的步长序列,介于O(nlogn)和O(ns)(1也称递减增量排序算法,是插入排序的一种高速而稳定的改进版本。 希尔排序通过将比较的全部元素分为几个区域来提升插入排序的性能。这样可以让一个元素可以一次性地朝最终位置前进一大步。然后算法再取越来越小的步长进行排序,算法的最后一步就是普通的插入排序,但是到了这步,需排序的数据几乎是已排好的了(此时插原创 2013-01-30 18:29:37 · 1310 阅读 · 0 评论