老梁
排序算法图解(插入、选择、冒泡、快速、合并、希尔等等)
关注作者
前往小程序,Get
更优
阅读体验!
立即前往
腾讯云
开发者社区
文档
建议反馈
控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
返回腾讯云官网
老梁
首页
学习
活动
专区
工具
TVP
最新优惠活动
返回腾讯云官网
社区首页
>
专栏
>
排序算法图解(插入、选择、冒泡、快速、合并、希尔等等)
排序算法图解(插入、选择、冒泡、快速、合并、希尔等等)
老梁
关注
发布于 2019-09-10 17:54:16
1.7K
0
发布于 2019-09-10 17:54:16
举报
文章被收录于专栏:
Java工程师成长之路
插入排序
从左至右两两对比,右边的数比左边的小,交换,交换,不断往右移动
选择排序
选定最左边的数A,第二个数B,A和B比较,A>B则交换;B大于A,则取B后一位与A做相同的比较,不断右移遍历完,则把最小的放在了最左边。再取第二个数变为A,做同样的步骤
冒泡排序
同样是经过两两对比,比如下图,从左边开始,第1,2位数对比,大的右移,第2,3位数对比,大的右移,以此类推,知道遍历到末尾,则最大的数冒泡到最右边
再回到开头,再次按原方法对比右移,到前一次右移到末尾的前一位结束
快速排序
选择最左边的数作为基点A,位置标记为i,最右边标记为j,然后i右移,遇到比A大的停下,j向左移动,遇到比A小的停下,然后i和j对应的数交换
当i和j相遇后,i,j对应的数要和A对比,比A大,继续走,当i或j有个数比A小时,该数与A交换;然后分成两份,交换数的左边和右边各自执行同样的算法
合并排序
合并排序简而言之就是分而治之的思想
把所有数据一步步拆分,再不断的两两合并排序
希尔排序
希尔排序是基于插入排序的以下两点性质而提出改进方法的:
插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率
但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位
希尔排序通过将比较的全部元素分为
几个区域
来提升插入排序的性能。这样可以让一个元素可以一次性地朝最终位置
前进一大步
然后算法再取
越来越小的步长
进行排序,算法的最后一步就是普通的插入排序,但是到了这步,需排序的数据几乎是已排好的了(此时插入排序较快)。
假设有一个很小的数据在一个已按升序排好序的数组的末端。可能会进行n次的比较和交换才能将该数据移至正确位置。而希尔排序会用较大的步长移动数据,所以小数据只需进行少数比较和交换即可到正确位置
桶排序
工作的原理是将数组分到有限数量的桶里。每个桶再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序)
桶排序以下列程序进行:
设置一个定量的数组当作空桶子。
寻访序列,并且把项目一个一个放到对应的桶子去。
对每个不是空的桶子进行排序。
从不是空的桶子里把项目再放回原来的序列中。
计数排序
是一种稳定的线性时间排序算法。计数排序使用一个额外的数组 {\displaystyle C} C ,其中第i个元素是待排序数组A中值等于i的元素的个数。然后根据数组C来将A中的元素排到正确的位置。
算法的步骤如下:
找出待排序的数组中最大和最小的元素
统计数组中每个值为i的元素出现的次数,存入数组 C 的第i项
对所有的计数累加(从C中的第一个元素开始,每一项和前一项相加)
反向填充目标数组:将每个元素i放在新数组的第 C[i]项,每放一个元素就将C[i]减去1
基数排序
是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较
将所有待比较数值(正整数)统一为同样的数字长度,数字较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。
堆排序
是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子节点的键值或索引总是小于(或者大于)它的父节点。
最小堆
本文参与
腾讯云自媒体同步曝光计划
,分享自作者个人站点/博客。
原始发表:2018-12-04 ,如有侵权请联系
cloudcommunity@tencent.com
删除
前往查看
编程算法
本文分享自
作者个人站点/博客
前往查看
如有侵权,请联系
cloudcommunity@tencent.com
删除。
本文参与
腾讯云自媒体同步曝光计划
,欢迎热爱写作的你一起参与!
编程算法
评论
登录
后参与评论
0 条评论
热度
最新
推荐阅读
LV.
文章
0
获赞
0
目录
插入排序
选择排序
冒泡排序
快速排序
合并排序
希尔排序
桶排序
计数排序
基数排序
堆排序
最小堆
领券
问题归档
专栏文章
快讯文章归档
关键词归档
开发者手册归档
开发者手册 Section 归档
0
0
0
推荐