常用排序算法总结(纯文字总结)

一、选择排序

a.简单选择排序:即利用一个大小为n的数组进行存储,每次从待排数据中取出最小值,直到n次,最后获取到一个从小到大的排序结果。

b.树形选择排序:利用完全二叉树,待排元素作为叶节点,选择两个节点中较小的作为其父节点,递归上去,则在根节点出获取到最小值,然后存放入结果数组中,然后将该元素的值改为无穷大,递归上述过程,获取到其他的节点,直到最终获取到n个节点。

c.堆排序:分为小根堆和大根堆(分别指根节点的值小于或等于左右孩子节点,大根堆则刚好相反)。在插入新元素的时候放在堆的尾端,然后进行堆的顺序进行调整,获取到有序的堆的时候,就能在根处获取到对应的最大或者最小值。

二、交换排序

a.冒泡排序:通过无序区中相邻关键字的比较和位置的交换,使得关键字大的或者小的像气泡一样浮出水面。

b.快速排序:(是目前基于比较的排序方法中最好的方法):将一个大的集合划分为两个小的集合,然后对两个子集实施同样的算法,将两个子集排好序后再重新合在一起(可另起一个变量进行基准值得存储,然后直接在待排元素的数组上进行移动,头尾两端交叉进行寻找对应的元素进行移动,最后将第三方变量的值赋值回到中间位置, 则实现两个子集的划分),递归下去就可以进行对应的子集的排序。

三、插入排序

a.直接插入排序:在一个存储长度为n的原始数据数组中,取出一个元素,与前面有序的元素进行比较,找到插入的位置后,移动有序的元素获得一个位置,然后进行元素的插入。

b.折半插入排序:在直接插入排序中,寻找合适的插入位置时,是进行遍历寻找,该算法则是在进行位置寻找的时候,进行二分法的位置寻找。

c:表插入排序:利用链表结构进行排序。

d.希尔排序:利用直接插入排序在原始数据基本有序的情况下效率较高的特点,该算法则是先使原始数据处于基本有序的状态,再通过直接插入排序来进行排序。对基本数据进行基本有序的操作:按照一定的间隔来进行分组,所有的分组独立进行排序,但是他们是穿插进行的,间隔划分到一定程度后,获得的元素基本有序(注意间隔大小除1外没有公因子,且最后一个分组间隔必须为1)。

四、归并排序

a.将两个或多个有序表合并成一个有序表的过程(可借助第三方的数组进行过度的存储)

总结:

1、数据规模小的排序,可以采用任意一种排序方法,但直接插入排序,简单选择排序,冒泡排序较简单

2、如果基本数据基本有序,可直接采用插入排序,冒泡排序或者快速排序

3、数据规模较大,可采用快速排序,堆排序或归并排序,快速排序是目前基于比较的排序方法中认为是最好的方法

4、不同的排序方法可以结合起来进行使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小佐编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值