
排序算法
常见的几种排序算法
田埂、
不惊于荣辱,不借于鼓吹,正余之心,穷于之力
展开
-
希尔排序算法
java实现希尔排序算法 希尔排序(Shell’s Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。 给定实例的shell排序的排序过程 假设待排序文件有10个记录,其关键字分别是: 49,38,65,97,76,13,27,49,55,04。 增量序列的取值依次为: 5,2,1 希尔排序是按照不同步长对元素进行插入排序,当刚开始元素很无序的时候,步长最大,所以插入排序的元素个数很原创 2021-03-31 08:32:26 · 157 阅读 · 0 评论 -
java实现选择排序
java实现选择排序 选择排序(Selection sort)是一种简单直观的排序算法。 工作原理: 第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。 排序思路: 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均原创 2021-03-31 08:31:54 · 91 阅读 · 0 评论 -
基数排序(桶排序)算法
基数排序(桶排序)算法 基数排序(桶排序)实现原理: 将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后, 数列就变成一个有序序列。 时间复杂度:O(nlog®m) java代码实现: //基数排序 (桶排序) 负数不行,小数不行 public class RadixSort { public static void main(String[] args) { int[]原创 2021-03-30 21:00:01 · 149 阅读 · 0 评论 -
java实现归并排序
java实现归并排序 归并排序(Merge Sort)是建立在归并操作上的一种有效,稳定的排序算法。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。 归并操作的工作原理如下: 第一步: 申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列 第二步: 设定两个指针,最初位置分别为两个已经排序序列的起始位置 第三步: 比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置 重复步骤3直原创 2021-03-30 20:44:16 · 131 阅读 · 0 评论 -
java实现推排序
java实现推排序 堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。 在堆的数据结构中,堆中的最大值总是位于根节点(在优先队列中使用堆的话堆中的最小值位于根节点)。堆中定义以下几种操作: 1. 最大堆调整(Max Heapify):将堆的末端子节点作调整,使得子节点永远小于父节点 2. 创建最大堆(Build Max Heap):将堆中的所有数据重新排序 3. 堆排序(Heap原创 2021-03-30 20:35:21 · 153 阅读 · 0 评论 -
冒泡排序
java实现冒泡排序 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。 冒泡排序算法的原理如下: 1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2.对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 3.针对所有的元素原创 2021-03-30 20:24:17 · 137 阅读 · 0 评论 -
java实现直接插入排序
java实现直接插入排序 插入排序 插入排序一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法 。 插入排序基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动 插入排序的工作方式像许多人排序一手扑克牌。开始时,我们的左手为空并且桌子上的牌面向下。然后,我们每次从桌子上拿走一张牌并将它插入左手中正确的位置。为了找到一张牌的正确位置,我们原创 2021-03-30 12:56:32 · 137 阅读 · 0 评论 -
java利用分治思想实现快速排序
java实现快速排序 分治策略的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解。即一种分目标完成程序算法,简单问题可用二分法完成。 快速排序算法的基本思想 设当前待排序的无序区为R[low…high],利用分治算法可将快速排序的基本思想描述为: 1.分解: 在R[low…high]中任选一个记录作为基准(Pivot),以此基准将当前无序区划分为左、右两个较小的子区间R[low…pivotpos-1)和R[pivotpo原创 2021-03-30 11:43:02 · 680 阅读 · 0 评论