七大排序算法
黄庆庆
失败的人只有一种,那就是抵达成功之前放弃的人。
展开
-
七大排序算法之冒泡排序
前言感觉虽然学了这么久的编程,但是越发感觉自己编程的思维没有达到理想中的效果,于是决定整理一下常见的七大排序算法,虽然都很基础,我也是这么认为的,但是越是基础的东西,吃透了之后,还是能有所收获的,比如排序算法,至少在需要的场合,能够信手拈来,我觉得这是必须的。废话不多说,先从最简单的冒泡排序开始。原理不断遍历数组每个元素,比较相邻两个元素的大小,如果为升序,当前者元素大于后者时,则交换这两个元素,...原创 2018-05-01 14:40:18 · 402 阅读 · 0 评论 -
七大排序算法之选择排序
前言和冒泡排序一样,这个也是简单而必须掌握的基础排序算法。原理遍历数组每个元素,若为升序,则寻找最小的数与第一个数交换,一趟排序结束后,最小的数位于数组第一个位置,然后在2-n个数中,寻找最小的元素放在第二个位置,往复下去,排序结束。时间复杂度固定:n*n代码public class SelectSort { //选择排序 //做N趟排序,每一趟选择最小的数与前面的交换 //时间复杂度...原创 2018-05-01 14:59:39 · 290 阅读 · 0 评论 -
七大排序算法之插入排序
前言插入排序也是比较常用的原理对于给定的一个数组,初始时,假设第一个元素自成一个有序序列,其余元素为无序序列,接着从第二个元素开始,按照元素的大小,依次将当前处理的元素插入到之前的有序序列中,直到最后一个元素插入到有序序列中为止。时间复杂度平均情况:n*n最坏情况:n*n最好情况:n代码public class InsertSort { //插入排序 //对于给定的一个数组,初始时假设第一个...原创 2018-05-01 15:33:10 · 316 阅读 · 0 评论 -
七大排序算法之快速排序
前言快排,快排,顾名思义,是一种效率非常高的排序算法,不管是在平常编程中,还是面试时,都是经常涉及到的,作为重点掌握原理基于分治的思想,首先在数组中选择一个标志位,然后分别从数组的两端扫描数组,设两个指示标志,一个指向起始位,例如low,一个指向末尾,例如high,首先从后半部分开始扫描,也就是开始移动high指示标志,如果发现有元素比标志位的值小,停止扫描,然后从前半部分开始扫描,也就是移动lo...原创 2018-05-01 15:55:21 · 384 阅读 · 0 评论 -
七大排序算法之堆排序
前言堆排序也是一种非常重要的排序算法,但是在写堆排序算法之前,需要对堆的概念有一定了解,简单来说就是利用了大根堆和小根堆的特性,在大根堆中,堆顶的元素是整个堆元素中最大的,小根堆中,堆顶的元素是整个堆元素中最小的。原理其实原理简单点说,就是利用大根堆小根堆的性质,那么怎么根据大根堆小根堆的性质来实现排序的效果呢?第一步,建堆,如果为升序,建大根堆,为降序,建小根堆。怎么将一个有序数组构建成一个堆呢...原创 2018-05-01 16:25:21 · 284 阅读 · 0 评论 -
七大排序算法之归并排序
前言虽然归并排序在七大排序算法中,不是那么的出众,但是毕竟人家是一个稳定的算法,所以,技多不压身,何乐为不为呢原理还是一个分治的思想,将一个数组分为两部分,然后对左边归并排序,对右边归并排序,再将两个有序子数组合并即可,那么怎么合并两个数组呢,简单一点的办法就是创建一个临时数组,然后不断遍历二个数组的元素,将较小者放入临时数组,知道其中一个数组元素遍历完毕,在将另一个数组中剩余的元素附加到临时数组...原创 2018-05-01 17:04:23 · 440 阅读 · 0 评论 -
七大排序算法之希尔排序
前言这个排序算法,其实就是一个插入排序的改进,可以作为知识的扩展来学习,由于平时用的不多,所以先记录在这里,以后要用不至于没有头绪。原理希尔排序在数组中采用跳跃式分组的策略,通过某个增量将数组元素划分为若干组,然后分组进行插入排序,随后逐步缩小增量,继续按组进行插入排序操作,直至增量为1时间复杂度平均情况:介于n和n*n之间最坏情况:n*n最好情况:n代码public class ShellSor...原创 2018-05-01 17:19:06 · 1376 阅读 · 0 评论 -
七大排序算法之各算法的比较
前言如果对七大排序算法还不是很了解的,可以对着下面这些链接,再去学习或者熟悉下冒泡排序选择排序插入排序快速排序堆排序归并排序希尔排序这篇文章主要是对这七大排序算法做一些总结,什么情况下应该用哪个排序算法等。正文首先,再复习一下各个排序算法的时间复杂度,以及稳定性(图源自网络)先科普一下算法的稳定性这个概念,什么叫做算法的稳定性呢?举个具体的例子首先简单的数字排序,这里稳定性没有任何意义,那么情况下...原创 2018-05-01 19:01:04 · 854 阅读 · 0 评论 -
内部排序与外部排序简单比较
前言本篇文章主要介绍内部排序与外部排序的知识,如果你和我一样还不知道内部排序和外部排序为何物的话,不妨看看我的理解正文由于待排序的记录数量不同,使得排序过程中涉及的存储器不同,可将排序方法分为两大类:内部排序与外部排序。概念内部排序:待排序记录存放在计算机随机存储器中(说简单点,就是内存)进行的排序过程。外部排序:待排序记录的数量很大,以致于内存不能一次容纳全部记录,所以在排序过程中需要对外存进行...原创 2018-06-03 17:33:35 · 19892 阅读 · 5 评论