生活服务
数据结构与算法-8排序算法思想一选择&冒泡&快排
2025-01-03 00:25  浏览:107

1 选择排序简介

选择排序(Selection Sort)是一种简单直观的排序算法。它的工作原理是:首先在未排序序列中找到最小(或最大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(或最大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

选择排序步骤

  1. 在未排序序列中找到最小(或最大)元素,存放到排序序列的起始位置。
  2. 再从剩余未排序元素中继续寻找最小(或最大)元素,然后放到已排序序列的末尾。
  3. 重复第二步,直到所有元素均排序完毕

选择排序分析

时间复杂度:O(N^2)

空间复杂度:O(1)

稳定性:不稳定

2 选择排序示例

 

3 冒泡排序简介

冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

冒泡排序步骤

  1. 比较相邻的元素:如果第一个比第二个大(升序排序,就交换他们两个。
  2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
  3. 针对所有的元素重复以上的步骤,除了最后一个。
  4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

示例

假设有一个数组 ,以下是冒泡排序的过程

  • 第一轮比较和交换后
  • 第二轮比较和交换后
  • 第三轮比较和交换后
  • 第四轮比较和交换后
  • 第五轮比较和交换后(因为 12 已经在 11 的右边,所以不需要交换

冒泡排序分析

时间复杂度:O(N^2)

空间复杂度:O(1)

稳定性:稳定

优化

  • 如果在某一轮遍历中没有发生任何交换,那么数组已经排序完成,可以提前结束算法。

     
  • 冒泡排序可以从两端向中间进行,这种优化称为“鸡尾酒排序”或“双向冒泡排序”。

4 冒泡排序示例

 

5 快速排序简介

快速排序是什么

快速排序(Quicksort)是一种高效的排序算法,它采用了分治(Divide and Conquer)的思想。

  1. 分治策略:快速排序通过选择一个基准元素(pivot,将待排序的序列分成两部分,使得左边部分的所有元素都小于或等于基准元素,右边部分的所有元素都大于或等于基准元素。
  2. 递归处理:然后,对左右两部分分别递归地应用上述过程,直到整个序列有序。

快速排序步骤

  1. 选择基准元素:通常选择序列的第一个元素作为基准元素,但也可以采用其他策略,如随机选择或三者取中等。
  2. 分区操作:通过一趟排序将待排序列分成两部分,使得左边部分的所有元素都小于或等于基准元素,右边部分的所有元素都大于或等于基准元素。
  3. 递归排序:对左右两部分分别递归地应用快速排序算法。

快速排序分析

时间复杂度:O(nlogn)

  • 最坏情况:当每次分区操作都出现最不平衡的情况时,即每次分区后一边序列为空,另一边序列只比原序列少一个元素时,快速排序的时间复杂度为O(n^2)。
  • 最好情况:当每次分区操作都能将序列平均分成两部分时,快速排序的时间复杂度为O(nlogn)。
  • 平均情况:快速排序的平均时间复杂度也为O(nlogn)。

空间复杂度:O(n)

稳定性:不稳定

基准关键字的选取

基准关键字的选取对快速排序的性能有很大影响。常用的选取方式有

  1. 固定选取:直接选择序列的第一个或最后一个元素作为基准关键字。
  2. 三者取中:选择序列首、尾和中间位置上的三个元素,取其中值作为基准关键字。
  3. 随机选取:在序列的left和right之间随机选择一个元素作为基准关键字。

课外阅读:图解快速排序[ https://blog.csdn.net/justidle/article/details/104203963 ]

6 快速排序示例

 

7 各种排序对比

排序名称时间复杂度是否稳定额外空间开销插入排序O(n^2)稳定O(1)冒泡排序O(n^2)稳定O(1)选择排序O(n^2)不稳定O(1)希尔排序O(n^2)不稳定O(1)归并排序O(nlogn)稳定O(n)快速排序O(nlogn)不稳定O(1)

如何选择排序算法

在选择上述的排序算法时,通常需要考虑以下几个指标

  1. 时间复杂度:算法执行所需的时间。这通常通过最好情况、平均情况和最坏情况的时间复杂度来衡量。
    • 插入排序选择排序冒泡排序的时间复杂度通常是 O(n^2)。
    • 希尔排序的时间复杂度依赖于间隔序列的选择,但通常比 O(n^2) 要好。
    • 归并排序快速排序的时间复杂度在平均和最好情况下是 O(n log n),但在最坏情况下快速排序可能会退化为 O(n^2)(当输入数组已经有序或接近有序时)。
    • 归并排序的最坏情况时间复杂度总是 O(n log n)。
  2. 空间复杂度:算法执行所需的额外空间。
    • 插入排序选择排序冒泡排序希尔排序是原地排序算法(in-place sorting,即它们只需要 O(1) 的额外空间(除了输入数组本身)。
    • 归并排序不是原地排序算法,因为它需要额外的空间来合并两个已排序的子数组。其空间复杂度是 O(n)。
    • 快速排序在递归调用中也需要额外的栈空间,但在平均情况下,其空间复杂度是 O(log n)。但在最坏情况下,如果递归调用不平衡,它可能需要 O(n) 的空间。
  3. 稳定性:如果相等的元素在排序后保持其原始顺序,则算法是稳定的。
    • 插入排序冒泡排序归并排序希尔排序(当间隔为1时)是稳定的。
    • 选择排序快速排序希尔排序(当间隔大于1时)通常不是稳定的。
  4. 数据的特性
    • 如果输入数据已经部分有序或接近有序,快速排序可能会表现得较差,因为它在最坏情况下的时间复杂度是 O(n^2)。在这种情况下,插入排序或希尔排序可能是一个更好的选择。
    • 如果内存限制是一个问题,并且需要原地排序,那么插入排序、选择排序、冒泡排序或希尔排序可能是更好的选择。
    • 如果需要稳定的排序算法,那么应该选择插入排序、冒泡排序、归并排序或希尔排序(当间隔为1时)。
  5. 实现细节:不同的排序算法可能在不同的编程语言或环境中具有不同的性能特性。因此,了解特定实现的性能特点也是很重要的。
  6. 并行性和分布式处理:一些排序算法(如归并排序和快速排序)可以更容易地并行化或分布到多个处理器上,以进一步提高性能。

8 示例题

如何对一个省200万学生的高考成绩(假设成绩最多只有2位小数,0~900范围)进行排序,用尽可能高效的算法。

    以上就是本篇文章【数据结构与算法-8排序算法思想一选择&冒泡&快排】的全部内容了,欢迎阅览 ! 文章地址:http://ww.kub2b.com/tnews/4715.html
     栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 企库往资讯移动站 http://ww.kub2b.com/mobile/ , 查看更多   
最新文章
腾讯围棋(野狐)手机版最新版中国象棋手机版「腾讯围棋(野狐)手机版最新版」
中国象棋竞技版最新版是有着很多经典的象棋残谱的经典益智游戏,在这里解锁自己感兴趣的棋谱,不管是是和电脑竞技还是真人pk,都
小米手机掉水里了应该怎么处理手机掉水里怎么处理「小米手机掉水里了应该怎么处理」
在日常生活中,我们难免会遇到一些突发情况,比如小米手机不慎掉入水中。面对这种情况,如果处理不当,可能会导致手机严重损坏。
有钱人“买爆”上海豪宅,有楼盘卖出200亿!去年多个“10万+”豪宅“日光”
本文来源:时代财经 作者:陈泽旋图源:图虫创意有钱人仍在楼市发挥他们的“钞能力”。近日,来自上海的中高端改善型项目海玥黄
华为WatchGT3可以遥控拍照吗?华为WatchGT3遥控拍照介绍华为手机驱动「华为WatchGT3可以遥控拍照吗?华为WatchGT3遥控拍照介绍」
近日有些朋友询问能否用华为Watch GT 3远程控制拍摄照片?以下是相关说明。(注:以上为简化版文本)华为WatchGT3支持遥控拍照,
谱写中印尼命运共同体新篇章
王鲁彤 中国和印度尼西亚是隔海相望的好邻居、命运与共的好伙伴,两国友谊源远流长。古代海上丝绸之路曾将双方紧密联系在一起,
东京股市继续上涨
  新华社东京4月18日电(记者钱铮)受医药和生物相关股普遍上涨拉动,日本东京股市18日继续上涨。日经225种股票平均价格指数收
如何有效格式化手机以清理存储空间和提升性能手机格式化是什么意思「如何有效格式化手机以清理存储空间和提升性能」
  在现代社会,手机已经成为我们生活中不可或缺的一部分。随着时间的推移,手机中的数据会逐渐增多,可能会导致设备运行缓慢,
如何快速关闭手机勿扰模式?详细步骤解析!手机勿扰模式在哪里「如何快速关闭手机勿扰模式?详细步骤解析!」
如何在Android手机上关闭勿扰模式 通过快捷设置关闭:用户可从屏幕顶部向下滑动以打开通知面板,接着找到“勿扰模式”图标(通常
microsd卡是什么卡手机sd卡是什么「microsd卡是什么卡」
  microsd卡是什么卡,很多人都有这样的疑问吧?下面就让我来为大家介绍一下吧!microsd卡是什么卡?  其实,MicroSD卡是一种
名茶汇聚的安徽,何以大而不强?
01为何名茶多,但名企少、名牌也少?说起安徽茶叶,大家第一印象是名优茶多,但这并不意味着龙头企业、知名品牌也多。中国十大名