
排序问题
...
翩若惊鸿_
这个作者很懒,什么都没留下…
展开
-
十大经典排序算法概述
1.分类: 十种常见排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。 2.算法复杂度: 3.相关概念: 稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。 不稳定:如果a原本在b的前面,而a=b,排序之后 a 可能会出现在 b 的后面。 时间复杂度:对排序数据的原创 2021-02-06 22:38:21 · 120 阅读 · 0 评论 -
插入排序
概述: 插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 算法描述: 一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下: 从第一个元素开始,该元素可以认为已经被排序 取出下一个元素,在已经排序的元素序列中从后向前扫描 如果该元素(已排序)大于新元素,将该元素移到下一位置 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置 将新元素插入到该位置后 重复步骤2原创 2021-02-06 21:35:09 · 111 阅读 · 0 评论 -
冒泡排序
这个大概是最最入门的了…… 代码如下: void bubblesort(int a[], int n) { for (int i = 0; i < n; i++) for (int j = 1; j < n - i; j++) { if (a[j - 1] > a[j]) swap(a[j], a[j - 1]); } }原创 2021-02-06 21:20:36 · 101 阅读 · 0 评论 -
C++实现快速排序及其改进方法
快速排序的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 快速排序是一种不稳定的排序算法,也就是说,多个相同的值的相对位置也许会在算法结束时产生变动 快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。 该方法的基本思想是: 1.先从数原创 2021-02-05 16:41:35 · 624 阅读 · 0 评论