
数据结构
Zhc_AuC
这个作者很懒,什么都没留下…
展开
-
排序稳定性分析
稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。选择排序做不到稳定,举例说明:那这样,5和5的相对顺序会改变。...原创 2022-04-01 15:22:41 · 229 阅读 · 0 评论 -
数据结构之计数排序
一.思路通过统计数组中每一个元素出现的次数,然后根据统计的次数进行排序,这样子就能够实现计数排序了,首先找出一个数组中的最大值和最小值,然后创建一个从最小值到最大值的数组,紧接着遍历数组,将数组中的数据,转换成最大值和最小值之间的每一个元素出现的次数,最后将统计数据出现的次数转换成根据统计的次数排序。它适合于数据大小范围比较集中的数组。但是如果数组中的数值很大的时候,就需要开辟很多空间,这就造成了空间浪费,为了避免空间浪费,需要采用相对映射的方法二.代码实现// 计数排序v.原创 2022-04-01 14:22:13 · 921 阅读 · 0 评论 -
数据结构之归并排序
一.思路当对两个有序的数组进行排序的时候,只需要逐个比较两个数组中的元素,然后将他们按先后顺序填入到临时数组temp中。同理对于一个无序的数列,首先将数组分解成单个元素后,再将数组通过前面介绍的方法合并成一个有序子数列,最后将这些有序子数列归并成一个有序数列,这样子就能够实现数组的归并排序了。二.代码实现void _MergeSort(int* a, int left, int right, int* temp){ if (left >= ri...原创 2022-03-31 22:04:36 · 440 阅读 · 0 评论 -
快速排序——hoare版本+挖坑法+双指针法
快排的基本思想是将数组中选出来的key值,通过左右数值比较大小的方式,把该key值调至它应该在数组中的位置(以升序为例)实现hoare版本的快排,需要先实现快排的单趟排序,单趟排序的目标是实现左边的值比key要小,右边的值比key要大。快排的结构图如下所示:单趟快速排序代码如下所示:// 快速排序hoare版本int PartSort1(int* a, int left, int right){ int keyi = left; while (rig...原创 2022-03-19 20:40:38 · 872 阅读 · 1 评论 -
数据结构——直接插入排序,选择排序,冒泡排序对比
由上图可知,常见的排序算法有插入排序,选择排序,交换排序,归并排序,其中直接插入排序属于插入排序,选择排序和堆排序属于选择排序 。横向对比,选择最差,无论在什么数据场景下,这三种排序的最坏的时间复杂度都是O(N^2),...原创 2022-03-19 14:37:16 · 1141 阅读 · 0 评论 -
数据结构之建堆以及堆排序
一.思路本文以升序为例,进行堆排序讲解。堆排序是建立在大堆的思想上的,通过将数组排成大堆,然后将堆数组中的头元素与尾元素进行交换,最后对除去尾元素外的全部堆数组元素进行大堆排序,如此循环往复,即可完成升序堆排序。 想要实现堆排序,首先就要建大堆,那为什么就不能小堆呢?那是因为如果建小堆,数组头元素即为最小值,然后需要将后面N-1个元素建小堆,这就造成时间复杂度提升到了N^2;所以不能建小堆来排升序。那如何建大堆呢,有两种方法,一种是从下往上建大堆,另一种是从上往下建...原创 2022-03-18 21:12:13 · 1952 阅读 · 0 评论 -
希尔排序详解
一.思路希尔排序是建立在插入排序的思想之上的,因为插入排序在应对数组接近有序的情况下,时间复杂度接近O(N),故如果对数组先进行预排序,使数组接近有序,再进行直接插入排序,能大幅度降低时间复杂度二.实现首先完成单组实现: int end = 0; int x = a[end + gap]; while (end >= 0) { if (a[end] >...原创 2022-03-18 12:35:14 · 763 阅读 · 0 评论 -
插入排序的实现
一.思路插入排序顾名思义就是往一堆有序数组中插入一个数,假设将一个数插入到一个升序数组中,需要将该数与该数组中的值,从尾数开始,逐一比较,如果遇到比该数大的值,就将前一个值与该数比较,如此比较下去,直至遇到比该数小的值,然后再将该数插入当前值中。二.代码void InsertSort(int* a, int n){ assert(a); for (int i = 0; i < n - 1; i++) { int end = i; ...原创 2022-03-17 21:07:50 · 610 阅读 · 0 评论