十大排序算法(一)

以下是十大排序算法的详细介绍:首先是前5个,后续更新全部。

十大排序算法汇总

**

  1. 冒泡排序(Bubble Sort)

    • 算法思想:重复遍历待排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。
    • 时间复杂度:平均和最坏情况都是O(n^2),最好情况是O(n)。
    • 空间复杂度:O(1)。
    • 稳定性:稳定。
    • 操作 :a.从左向右依次对比相邻元素,将较大值交换到右边;
      b.每一轮循环可将最大值交换到最左边
      c.重复1.2两个步骤,直至完成整个数组
    • 图片演示:
  2. 选择排序(Selection Sort)

    • 算法思想:它的工作原理是每次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。
    • 时间复杂度:O(n^2)。
    • 空间复杂度:O(1)。
    • 稳定性:不稳定。
    • 算法简介:a.选择一个元素赋值给中间元素temp,默认选择左边第一个元素,这样左边第一个元素的位置就空出来了;b. 先从最右边的元素开始依次跟temp比较大小,大于等于temp元素的原地不动,遇到小于temp元素的则终止循环,把该元素赋值到左侧空出来的位置,同时左侧索引值自增,这是该元素原来的位置就空出;c. 然后左侧元素开始依次跟temp比较大小,小于等于temp元素的原地不动,遇到大雨temp元素的则终止循环,把该元素赋值到右侧空出来的位置,同时右侧索引值自减;d. 依次循环2,3步,直至左侧索引等于右侧索引,则完成一轮循环,把哨兵赋值到该索引的位置。e. 在分别递归地对temp左右两侧的子数组进行1234步,直至递归子数组只有一个元素则排序完成
    • 图片演示:
  3. 插入排序(Insertion Sort)

    • 算法思想:通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序)。
    • 时间复杂度:O(n^2)。
    • 空间复杂度:O(1)。
    • 稳定性:稳定。
    • 插入排序简介 : a.左边第一个元素可作为有序子数组;
      b.从第二个元素开始,依次向前比较,大于该元素的则向右移一位,直到比该元素小的元素,插入其后;
      c.依次向后推进,直至整个数组成为有序数组
    • 图片演示 (可以跟扑克牌一样,从小排)
  4. 希尔排序(Shell Sort)

    • 算法思想:也称递减增量排序算法,是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因DL.Shell于1959年提出而得名。
    • 时间复杂度:平均时间复杂度为O(nlogn),最坏情况为O(n^2)。
    • 空间复杂度:O(1)。
    • 稳定性:不稳定。
    希尔排序简介:

    a.首先选择一个步长值gap,以步长值为间隔把数组分为gap个子数组gap=length/2

    b.对每个子数组进行插入排序;

    c.逐步减小步长 gap = gap/2,重复对数组进行1,2 步骤;

    d.当步长值减为1时,相当于对数组进行一次直接插入排序。

    • 图像演示:
  5. 快速排序(Quick Sort)

    • 算法思想:通过一个基准值将数据分为两部分,一部分数据比另一部分数据小,则可再对这两部分数据分别进行快速排序,以此类推,可以递归至整个数据集排序完成。
    • 时间复杂度:平均O(nlogn),最坏O(n^2)。
    • 空间复杂度:O(logn)。
    • 稳定性:不稳定。
    • 快速排序的简介:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
    • 图片演示:
  6. 总结:

这些排序算法各有特点和适用场景,选择合适的排序算法需要根据数据集的规模、数据分布和性能需求来决定。

相关推荐
on_pluto_6 分钟前
Leecode hot100 - 448. 找到所有数组中消失的数字
数据结构
zl_dfq18 分钟前
数据结构 之 【布隆过滤器 的简介】
数据结构
晴空闲雲29 分钟前
数据结构与算法-树和二叉树-二叉树的存储结构(Binary Tree)
数据结构·算法
索迪迈科技2 小时前
Flink Task线程处理模型:Mailbox
java·大数据·开发语言·数据结构·算法·flink
元亓亓亓3 小时前
LeetCode热题100--230. 二叉搜索树中第 K 小的元素--中等
算法·leetcode·职场和发展
草莓熊Lotso3 小时前
《算法闯关指南:优选算法-双指针》--01移动零,02复写零
c语言·c++·经验分享·算法·leetcode
焜昱错眩..4 小时前
代码随想录算法训练营第三十九天|62.不同路径 63.不同路径ll
算法
焦耳加热7 小时前
阿德莱德大学Nat. Commun.:盐模板策略实现废弃塑料到单原子催化剂的高值转化,推动环境与能源催化应用
人工智能·算法·机器学习·能源·材料工程
wan5555cn8 小时前
多张图片生成视频模型技术深度解析
人工智能·笔记·深度学习·算法·音视频
u6068 小时前
常用排序算法核心知识点梳理
算法·排序