排序算法
常用排序算法系列
Fred-X
Java开发一枚,持续学习,持续分享。
展开
-
排序算法 - 基数排序
基数排序是1887年赫尔曼·何乐礼发明的。基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是通过键值的各个位的值,将要排序的元素分配至某些“桶”中,达到排序的作用。基数排序法是属于稳定性的排序,在某些时候,基数排序法的效率高于其它的稳定性排序法。 将所有待比较数值统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后, 数列就变原创 2020-12-30 13:46:58 · 302 阅读 · 2 评论 -
排序算法-归并排序
归并排序(Merge Sort)是建立在归并操作上的一种有效,稳定的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。 将一个数组拆分成一个个元素,最后将一个个元素两组两组有序合并,最终合并成的数组则是有序的数组。 归并排序本质上其实不难,只是在递归拆分时,接触递归比较少的人很难理解他的执行过程,一旦理解了递归的执行流程,归并算法也就理解原创 2020-12-29 00:29:29 · 330 阅读 · 4 评论 -
排序算法-快速排序
快速排序(Quicksort)是对冒泡排序的一种改进。 快速排序由C. A. R. Hoare在1960年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 快速排序快是因为空间换取了时间。快速排序是不稳定的排序算法,当一个数组是有序或者基本有序,则退化成冒泡排序,这种情况可以考虑使用随机pivot来处理。在数组无序时快速排序速度极快。原创 2020-12-27 17:43:37 · 326 阅读 · 1 评论 -
排序算法-希尔排序
希尔排序(Shell's Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因 D.L.Shell 于 1959 年提出而得名。 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至 1 时,整个文件恰被分成一组,算法便终止。 万变不离其宗,其实就是在插入排序的基础上做了优化。通过步长不断把较小的元素换到前排,原创 2020-12-26 15:29:40 · 506 阅读 · 6 评论 -
排序算法-选择排序
该算法的核心是每次假定当前的元素为最小值,然后和后面的元素一一比较,有更小的元素,则设置更小的元素为最小值,最后交换位置。所有元素循环完成后则排序完成。 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。原创 2020-12-24 21:24:50 · 232 阅读 · 0 评论 -
排序算法-插入排序
插入排序,一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法 。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个形成一个有序表。在其实现过程使用双层循环,外层循环除第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动 。 该算法的核心其实就是拿B表中的第一个元素和A表中一个个比较,从A表中最后一个元素开始比较找到合适的位置放入。原创 2020-12-24 18:30:24 · 358 阅读 · 1 评论 -
排序算法-冒泡排序
其实就是两个两个比较,从前到后,第一大轮结束之后其实就确定了一个最大元素,放在数组最后一个位置。第二大轮确定了倒数第二大的元素,放在数组倒数第二个位置。第三大轮确定了第三大的元素,放在倒数第三个位置。每一大轮又排除之前排序好的元素,循环数组长度-1大轮,就确定了数组-1个元素的排序位置,由于数组长度-1个元素都排序好了,所以最后一个元素一定是最小的。也就达成了排序的效果。原创 2020-12-23 23:06:47 · 197 阅读 · 0 评论