排序算法
死神的丧钟
这个作者很懒,什么都没留下…
展开
-
排序算法之二分插入排序Java版
/** * 二分插入排序是直接插入排序的改进版 * 二分插入排序是不稳定排序 * * 原理: * 将一个记录插入到已排序好的有序序列中,从而得到一个新,记录数增1的有序序列。 * 二分插入排序用二分法找出新记录在有序序列中的位置。 */public class BinaryInsertionSort { public void sort(int[] arr) { int原创 2015-07-01 21:13:20 · 608 阅读 · 0 评论 -
排序算法之直接插入排序Java版
/** * 直接插入排序 * 直接插入排序属于稳定排序 * 直接插入排序空间复杂度O(1) * 最优时间复杂度O(n),当待排序的数组已经排序好时,直接插入排序的时间复杂度为O(n) * 最坏时间复杂度O(n^2),当待排序的数组是倒序时,直接插入排序的时间复杂度为O(n^2) * 直接插入排序适用于数量比较少的数组排序 * * 基本原理: * 将一个记录插入到已排序好的有序序原创 2015-07-01 21:16:06 · 570 阅读 · 0 评论 -
排序算法之堆排序Java版
/** * 堆排序 堆排序是一种树形选择排序,是直接选择排序的有效改进,是不稳定的排序 * 最优时间复杂度O(nlogn) * 最坏时间复杂度O(nlogn) * 空间复杂度O(1) * * 堆排序原理: * 1、根据序列建立大根堆(或者小根堆)。 * 2、将堆顶元素R[1]与最后一个元素R[n]交换,得到新的无序区(R1,R2,......Rn-1)和新的有序区(Rn),且满足原创 2015-07-01 22:00:13 · 561 阅读 · 0 评论 -
排序算法之希尔排序Java版
/** * * 希尔排序 * 希尔排序又叫缩小增量排序,是直接插入排序算法的一种更高效的改进版本 * 希尔排序属于不稳定排序 * 希尔排序空间复杂度O(1) * 希尔排序的时间复杂度和其增量序列有关系,平均时间复杂度O(n^1.3) * * 基本原理: * 先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行依次直接原创 2015-07-01 21:41:08 · 462 阅读 · 0 评论 -
排序算法之归并排序Java版
/** * 归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法将已有序的子序列合并,最后得到完全有序的序列。 * 归并排序是稳定排序,速度仅次于快速排序 * 时间复杂度为O(nlogn) * 空间复杂度为O(n) 归并排序需要n空间的临时数组来存储子序列 * 归并排序原理: * 将待排序序列分为若干个子序列,,对每个子序列进行排序。 * 然后再把相邻的两个有序子序列合原创 2015-07-01 22:24:12 · 626 阅读 · 0 评论 -
排序算法之直接选择排序Java版
/** * 直接选择排序 * 直接选择排序是一种不稳定的排序 * 时间复杂度为 O(n^2),当记录占用字节数较多时,直接选择排序通常比直接插入排序的执行速度快些。 * 空间复杂度为O(1) * * 原理:从未排序序列中找到最小元素,存放到已排序序列的末尾,以此类推,直到所有元素均排序完毕。 */public class DirectSelectionSort { public原创 2015-07-01 21:49:19 · 627 阅读 · 0 评论 -
排序算法之冒泡排序Java版
/** * 冒泡排序 * 冒泡排序是稳定排序 * 冒泡排序空间复杂度O(1) * 最优时间复杂度O(n),当序列已经排序好时,时间复杂度为O(n) * 最坏时间复杂度O(n^2),当序列是倒序时,时间复杂度为O(n^2) * 冒泡排序是一种交换排序 * * 冒泡排序原理: * 在序列中对当前还未排序的数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。原创 2015-07-01 22:13:58 · 660 阅读 · 0 评论 -
排序算法之快速排序Java版
/** * 快速排序 * 快速排序是不稳定排序 * 快速排序是一种交换排序 * 快速排序对序列的操作空间复杂度为O(1),如果快速排序用递归实现,则递归栈的空间复杂度为O(logn)~O(n)之间。 * 最佳时间复杂度O(nlogn) * 平均时间复杂度O(nlogn) * 快速排序是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机分布时,快速排序的平均时间最短。原创 2015-07-01 22:20:36 · 517 阅读 · 0 评论 -
排序算法及其复杂度(JavaScript实现)
排序算法经过了很长时间的演变,产生了很多种不同的方法,每种算法都有它特定的使用场合。本文总结了常用的排序算法及其JavaScript实现。原创 2015-09-05 15:19:25 · 1576 阅读 · 0 评论