排序算法

排序算法

插入排序

1. 直接插入排序

57,68,59,52排序

  1. 将57作为关键字,57就在第一位不需要变动(57,68,59,52)
  2. 将68作为关键字,与第一位57比较,放在57后面(57,68,59,52)
  3. 将59作为关键字,与57,69比较,放在57后面(57, 59,68, 52)
  4. 将52作为关键字,与前面的数比较,放在57前面(52,57, 59,68)

2. shell(希尔)排序

在这里插入图片描述

选择排序

1. 简单选择排序

57,68,59,52排序

  1. 找最小值52,52与第一个数调换位置52】68,59,57
  2. 找68,59,57的最小值57,与第二个数调换位置52,57】59,68
  3. 找59,68的最小值59,59就在第三位置 52,57,59】68
  4. 剩余一个数不需要再比较

2.堆排序

在这里插入图片描述

大顶:根节点大于两个子节点。
小顶:根节点小于两个子节点。

在这里插入图片描述

从第n/2的节点开始调整(最大值为84,调整84和56的位置)
在这里插入图片描述

调整第(n/2)-1的节点(这个刚好符合大顶堆的要求不需要改变)
在这里插入图片描述

调整第(n/2)-2的节点(最大值为84,调整84和46的位置)
在这里插入图片描述

调整后46和56比较不符合大顶堆的要求,调换46和56的位置
在这里插入图片描述

初始堆完成 选B
排序:
在这里插入图片描述

1.将最大根节点与最后一个叶子节点调换位置并删除连接
在这里插入图片描述

2.重新构建堆
在这里插入图片描述

3.将根节点与最后第二个叶子结点调换位置并删除连接
在这里插入图片描述

4.重新构建堆
在这里插入图片描述

交换排序

1. 冒泡排序

从最后两个数进行,将小的数排在前面,然后小的数与前一个数进行比较,然后将最小的数排在前面~~~。第一轮过后最小的数就排在了第一位,然后将第一位数看成一个新的数字序列重新排序
在这里插入图片描述

  1. 快速排序
    首先选择一个关键字(基准数)比如57,进过比较后57前面的都比它小57后面的都比它大,然后缩小范围将57前面的重新排序将57后面的重新排序,最后的结构就像这样[]1[]2[]3[]4[]5[]6[]7[]
    在这里插入图片描述

归并排序

在这里插入图片描述

基数排序

首先按个位进行排序,然后对生成的序列按十位排序,然后对生成的序列按百位排序
在这里插入图片描述

稳定的排序算法

在这里插入图片描述

相同的数,如果排序之前的位置在前的永远在前面

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

桀骜浮沉

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

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

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

打赏作者

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

抵扣说明:

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

余额充值