
排序算法
AddoilDan
这个作者很懒,什么都没留下…
展开
-
快速排序Java实现
相关特点最坏时间复杂度为o(n^2)最好时间复杂度为o(nlogn)平均时间复杂度为o(nlogn)平均空间复杂度为o(logn)不稳定基本思想通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。 算法描述快速排序使用分治法来把一个串(list)分为两个子串(sub-lists)。具体算法描述如下:从数列中...原创 2018-07-13 19:17:32 · 236 阅读 · 0 评论 -
归并算法Java实现
基本特点原创 2018-07-13 19:46:02 · 1744 阅读 · 0 评论 -
希尔排序Java实现
相关特点最坏时间复杂度为o(n^2) 最好时间复杂度为o(n^1.3) 平均时间复杂度为o(nlogn)~o(n^2) 平均空间复杂度为o(1) 不稳定基本思想1959年Shell发明,第一个突破O(n2)的排序算法,是简单插入排序的改进版。它与插入排序的不同之处在于,不会有大幅度的移动,它会优先比较距离较远的元素。希尔排序又叫缩小增量排序。算法描述将整个待排序的记录序列...原创 2018-07-13 20:19:46 · 852 阅读 · 1 评论 -
堆排序Java实现
相关概念大顶堆:每个结点的值都大于或等于其左右孩子结点的值小顶堆:每个结点的值都小于或等于其左右孩子结点的值图示:相关特点最坏时间复杂度为o(nlogn)最好时间复杂度为o(nlogn)平均时间复杂度为o(nlogn)平均空间复杂度为o(1)不稳定数据结构是数组基本思想堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结...原创 2018-07-13 22:34:56 · 175 阅读 · 0 评论 -
冒泡排序Java实现
相关特点数据结构 ---------- 数组最差时间复杂度 ---- O(n^2)最优时间复杂度 ---- 如果能在内部循环第一次运行时,使用一个旗标来表示有无需要交换的可能,可以把最优时间复杂度降低到O(n)平均时间复杂度 ---- O(n^2)所需辅助空间 ------ O(1)稳定性 ------------ 稳定基本思想比较两个相邻的元素,将值大的元素交换至右端。...原创 2018-07-14 12:04:50 · 153 阅读 · 0 评论 -
插入排序Java实现
相关特点最好时间复杂度为O(n);最坏时间复杂度依然为O(n2)。但是在数组元素随机排列的情况下,插入排序还是要优于冒泡、选择排序。基本思想插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。算法描述 从第一个元素开始,该元素可以认为已经被排序;...原创 2018-07-14 12:55:31 · 170 阅读 · 0 评论 -
选择排序Java实现
相关特点最好最坏时间复杂度O(n2)空间复杂度O(1)不稳定数据规模越小越好。基本思想选择排序(Selection-sort)是一种简单直观的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 算法描述给定数组:int[] arr={里面n个数据};下...原创 2018-07-14 13:13:53 · 270 阅读 · 0 评论 -
排序算法总结
排序算法 最好时间 平均时间 最坏时间 辅助空间 稳定性 备注 简单选择排序 O(n^2) O(n^2) O(n^2) O(1) 不稳定 n小时比较好 简单插入排序 O(n) O(n^2) O(n^2) O(1) 稳定 大部分已有序时比较好 冒泡排序 O(n) O(n...原创 2018-07-14 13:43:24 · 134 阅读 · 0 评论