【排序】两种选择排序

知识点理解


选择排序


想象一下,你有一堆乱七八糟的卡片,每张卡片上都有一个数字。选择排序就像是你在每轮游戏中,都从这堆卡片里找到最小的那个数字,然后把它放到最前面去。这个过程要重复好几次,直到所有的卡片都按从小到大的顺序排好。
空间:你不需要额外的卡片,就在原地搞定。
时间:这个方法比较慢,因为你每次都要从头到尾找一遍最小的数字。
稳定性:这个方法不太稳定,有时候两张卡片上的数字一样,但它们的位置可能会在排序过程中被搞乱。


堆排序


堆排序就像是你在玩一个特殊的游戏,游戏规则是每棵树(堆)的根(最上面)的数字要么最大要么最小。你先按照规则把卡片堆成几棵树,然后每次从每棵树的根(最上面)拿一张卡片出来,放到一边,再把剩下的卡片重新堆成树。
空间:和选择排序一样,你不需要额外的卡片,就在原地搞定。
时间:这个方法比选择排序快多了,因为它每次只需要调整一小部分卡片。
稳定性:这个方法也不怎么稳定,排序的时候,原来位置相近的卡片可能会被换到很远的地方去。
 

知识点讲解


选择排序


基本思想: 选择排序是一种简单直观的排序方法。它的工作原理是在每一轮中,从待排序的元素中选择关键字最小的元素,然后将其与序列的当前位置进行交换,从而逐步构建出一个有序序列。
实现过程:
假设有一个排序表L[1...n],选择排序从这个表中进行操作。
在第i趟排序中,从L[1...n]中找出关键字最小的元素,并将其与L[i]交换位置。
随着i的增加,每一趟排序都能确定一个元素的最终位置。
经过n-1趟排序后,整个表就会变得有序。
性能分析:
空间复杂度: O(1),选择排序是原地排序算法,不需要额外的存储空间。
时间复杂度: 选择排序的时间复杂度是O(n^2),因为它需要进行n-1趟排序,每趟都需要遍历剩余的n-i个元素。
稳定性: 选择排序是不稳定的排序算法,因为在交换过程中可能会改变相同元素的相对顺序。


堆排序


基本概念: 堆是一种特殊的完全二叉树,其中每个父节点的值都满足一定的顺序规则:
大根堆:父节点的值不小于其子节点的值。
小根堆:父节点的值不大于其子节点的值。
实现过程:
根据大根堆或小根堆的规则,将待排序的元素构建成相应的二叉树结构。
根节点是堆中的最大值或最小值,将其输出。
将堆的最后一个元素与堆顶元素交换,然后根据堆的规则进行调整,以保持堆的性质。
重复上述过程,直到堆中只剩下一个元素。
性能分析:
空间复杂度: O(1),堆排序同样是原地排序算法。
时间复杂度: 堆排序的时间复杂度是O(n log n),因为构建堆的时间复杂度是O(n),而每一趟的调整时间复杂度是O(log n)。
稳定性: 堆排序是不稳定的排序算法,因为在调整过程中可能会改变相同元素的相对顺序。


这两种排序算法各有特点,选择排序实现简单但效率较低,适用于小型数据集;堆排序效率较高,适用于大型数据集,但实现相对复杂。
 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值