![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
八大排序算法 java
小小白的成长之路
本人小白一只,目前尚在学习与探索过程中,分享的资料仅供参考,如有冒犯或者写的不好,需要更改的地方,可留言。
展开
-
八大排序之交换排序—冒泡排序
冒泡排序 最简单排序实现 可以做成参考:https://www.cnblogs.com/shen-hua/p/5422676.html 冒泡排序的思想其实很简单,它是一种简单的选择排序,在细节上有很多种优化的方法。 它的基本思想是:两两比较相邻记录的关键字,如果反序则进行交换。冒泡排序的优点:每进行一趟排序,就会少比较一次,因为每进行一趟排序都会找出一个较大值。如上例:第一趟比...原创 2018-09-10 11:25:38 · 239 阅读 · 0 评论 -
八大排序之堆排序--基数排序 java
八大排序之堆排序–基数排序 java算法过程:1、初始化:构造一个10*n的二维数组,一个长度为n的数组用于存储每次位排序时每个桶子里有多少个元素。2、循环操作:从低位开始(我们采用LSD的方式),将所有元素对应该位的数字存到相应的桶子里去(对应二维数组的那一列)。然后将所有桶子里的元素按照桶子标号从小到大取出,对于同一个桶子里的元素,先放进去的先取出,后放进去的后取出(保证排序稳定性)。这...原创 2018-10-02 14:11:59 · 213 阅读 · 0 评论 -
八大排序之堆排序--归并排序 java
八大排序之堆排序–归并排序 java基本思想 归并排序是利用归并的思想实现的排序方法,该算法采用经典的分治策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。可以看到这种结构很像一棵完全二叉树,本文的归并排序我们采用递归去实现(也可采用迭代的方式去实现)。分阶段可以理解为就是递归拆分子序列的过程,...原创 2018-10-02 15:01:33 · 234 阅读 · 0 评论 -
八大排序之选择排序—选择排序
选择排序参考:https://www.cnblogs.com/shen-hua/p/5424059.html 我们在一个序列当中选出一个最大的(升序为最小的),然后和第一个元素交换,然后后面再在剩下的找最大的,再和第二个元素交换。这样最终就可以得到一个有序的序列。时间复杂度:简单选择排序的比较次数与序列的初始排序无关。 假设待排序的序列有 N 个元素,则比较次数永远都是N (N - 1)...原创 2018-09-10 14:55:11 · 186 阅读 · 0 评论 -
八大排序之交换排序—快速排序
快速排序快速排序(Quicksort)是对冒泡排序的一种改进。快速排序由C. A. R. Hoare在1962年提出。 基本思想:选取一个记录作为枢轴,经过一趟排序,将整段序列分为两个部分,其中一部分的值都小于枢轴,另一部分都大于枢轴。然后继续对这两部分继续进行排序,从而使整个序列达到有序。 时间复杂度: 最差情况:当数组原本就按从小到大顺序排列时: 10 20 30 40 50 60...原创 2018-09-10 17:17:53 · 191 阅读 · 0 评论 -
八大排序之插入排序—希尔排序
八大排序之插入排序—希尔排序 算法步骤: 1)选择一个增量序列t1,t2,…,tk,其中ti>tj,tk=1; 2)按增量序列个数k,对序列进行k 趟排序; 3)每趟排序,根据对应的增量ti,将待排序列分割成若干长度为m 的子序列,分别对各子表进行直接插入排序。仅增量因子为1 时,整个序列作为一个表来处理,表长度即为整个序列的长度。希尔排序也是一种插入排序方法,实际上是一种分组插...原创 2018-09-09 00:54:49 · 190 阅读 · 0 评论 -
八大排序之插入排序—直接插入排序
时间复杂度 当数据正序时,执行效率最好,每次插入都不用移动前面的元素,时间复杂度为O(N)。 当数据反序时,执行效率最差,每次插入都要前面的元素后移,时间复杂度为O(N2)。 所以,数据越接近正序,直接插入排序的算法性能越好。 空间复杂度 由直接插入排序算法可知,我们在排序过程中,需要一个临时变量存储要插入的值,所以空间复杂度为 1 。算法稳定性 直接插入排序的过程中,不需要...原创 2018-09-08 17:01:58 · 332 阅读 · 0 评论 -
八大排序之堆排序--堆排序 java
堆排序分析及优化 javahttps://www.cnblogs.com/CherishFX/p/4643940.html堆排序,是利用堆结构进行排序,一般是利用最大堆,即根节点比左右两个子树的节点都大。堆排序是一种树形选择排序方法,它的特点是:在排序的过程中,将array[0,…,n-1]看成是一颗完全二叉树的顺序存储结构,利用完全二叉树中双亲节点和孩子节点之间的内在关系,在当前无序区中选...原创 2018-09-20 16:59:04 · 427 阅读 · 0 评论