十大排序算法(一)

以下是十大排序算法的详细介绍:首先是前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. 总结:

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

相关推荐
karmueo4621 分钟前
视频序列和射频信号多模态融合算法Fusion-Vital解读
算法·音视频·多模态
小汉堡编程1 小时前
数据结构——vector数组c++(超详细)
数据结构·c++
写代码的小球3 小时前
求模运算符c
算法
雾里看山5 小时前
顺序表VS单链表VS带头双向循环链表
数据结构·链表
大千AI助手7 小时前
DTW模版匹配:弹性对齐的时间序列相似度度量算法
人工智能·算法·机器学习·数据挖掘·模版匹配·dtw模版匹配
好好研究7 小时前
学习栈和队列的插入和删除操作
数据结构·学习
YuTaoShao8 小时前
【LeetCode 热题 100】48. 旋转图像——转置+水平翻转
java·算法·leetcode·职场和发展
生态遥感监测笔记8 小时前
GEE利用已有土地利用数据选取样本点并进行分类
人工智能·算法·机器学习·分类·数据挖掘
Tony沈哲9 小时前
macOS 上为 Compose Desktop 构建跨架构图像处理 dylib:OpenCV + libraw + libheif 实践指南
opencv·算法