美文网首页
O(n^2)的排序算法(选择、插入、冒泡)

O(n^2)的排序算法(选择、插入、冒泡)

作者: 小丸子的呆地 | 来源:发表于2021-07-26 10:09 被阅读0次

选择、插入、冒泡是入门级的排序算法,虽然性能不怎么样,但是属于基础,为后面的排序也提供良好的思路。

三种排序比较

相同点

  • 时间复杂度都是 O(n^2),空间复杂度都是 O(1)。
  • 都需要采用两重循环。

不同点

  • 选择排序是不稳定的,冒泡排序、插入排序是稳定的;

假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i] = r[j],且 r[i] 在 r[j] 之前,而在排序后的序列中,r[i] 仍在 r[j] 之前,则称这种排序算法是稳定的;否则称为不稳定的。

  • 在这三个排序算法中,选择排序交换的次数是最少的;

选择排序

选择排序可以演变为二元选择排序:

  • 二元选择排序:一次遍历选出两个值——最大值和最小值;
  • 二元选择排序剪枝优化:当某一轮遍历出现最大值和最小值相等,表示数组中剩余元素已经全部相等。

插入排序

插入排序有两种写法:

  • 交换法:新数字通过不断交换找到自己合适的位置;
  • 移动法:旧数字不断向后移动,直到新数字找到合适的位置。

冒泡排序

冒泡排序有两种优化方式:

  • 记录当前轮次是否发生过交换,没有发生过交换表示数组已经有序;
  • 记录上次发生交换的位置,下一轮排序时只比较到此位置。

相关文章

  • python 八大算法

    排序算法总结 排序算法 平均时间复杂度 冒泡排序O(n2) 选择排序O(n2) 插入排序O(n2) 希尔排序O(n...

  • 排序算法总结

    排序算法总结 分类编程技术 排序算法平均时间复杂度 冒泡排序O(n2) 选择排序O(n2) 插入排序O(n2) 希...

  • LeetCode-排序算法

    LeetCode-排序算法 时间复杂度 排序算法平均时间复杂度冒泡排序O(n2)选择排序O(n2)插入排序O(n2...

  • 排序算法小总结

    排序算法时间复杂度冒泡排序O(n2)选择排序O(n2)插入排序O(n2)希尔排序O(n1.5)快速排序O(N*lo...

  • 2020-11-19 排序算法一(冒泡和快排多种实现)

    主流的排序算法 时间复杂度为O(n^2):冒泡排序选择排序插入排序希尔排序(介于O(n^2)与O(nlogn)之间...

  • 算法比较

    排序算法平均时间复杂度冒泡排序O(n²)选择排序O(n²)插入排序O(n²)希尔排序O(n1.5)快速排序O(N*...

  • 排序复习

    掘金 冒泡排序 算法负责度为O(n^2) 插入排序

  • Sort Algorithm

    排序算法 首先要讨论的是O(n^2)的算法。主要有冒泡排序,选择排序,插入排序。冒泡排序比较常见这里不细说。 ①选...

  • 冒泡排序、插入排序、选择排序

    三种算法对比: 冒泡排序 插入排序 选择排序 测试 提升 冒泡排序和插入排序的时间复杂度都是 O(n2),都是原地...

  • 插入排序和希尔排序

    归属:减治法 算法复杂度:插入排序O(n2),但是Cavg(n)~n2/4 ,通常情况优于选择、冒泡排序。它是插入...

网友评论

      本文标题:O(n^2)的排序算法(选择、插入、冒泡)

      本文链接:https://www.haomeiwen.com/subject/kpbwmltx.html