排序算法
文章平均质量分 73
快速排序是一个就地排序,分而治之,大规模递归地算法。从本质上来说,它是归并排序的就地版本。快速排序可以由下面四步组成。
如果不多于1个数据,直接返回。
一般选择序列最左边的值作为支点数据。
将序列分成2部分,一部分都大于支点数据,另外一部分都小于支点数据。
对两边利用递归排序数列。
快速排序比大部
气定神闲的小hao
numb and dying
展开
-
C语言实现----基数排序
一、基数排序介绍基数排序( Radix Sort )是桶排序的扩展,它的基本思想是:将整数按位数切割成不同的数字,然后按每个位数分别比较。具体做法是:将所有待比较数值统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。二、基数排序图文说明1.基数排序图文说明通过基数排序对数组{53,3,542,748,14,214,154,63,616}进行排序,它的示意图如下:原创 2022-10-13 11:23:16 · 3496 阅读 · 0 评论 -
C语言实现----桶排序
一、桶排序介绍桶排序( Bucket Sort )的原理很简单,它是将数组分到有限数量的桶子里。假设待排序的数组 a 中共有 N 个整数,并且已知数组 a 中数据的范围[0, MAX )。在桶排序时,创建容量为 MAX 的桶数组 r ,并将桶数组元素都初始化为0;将容量为 MAX 的桶数组中的每一个单元都看作一个"桶"。在排序时,逐个遍历数组 a ,将数组 a 的值,作为"桶数组 r "的下标。当 a 中数据被读取时,就将桶的值加1。例如,读到数组 a [3]=5,则将 r [5]的值+1。原创 2022-10-13 10:32:43 · 2210 阅读 · 0 评论 -
C语言实现----归并排序
一、归并排序介绍将两个的有序数列合并成一个有序数列,我们称之为"归并"。归并排序( Merge Sort )就是利用归并思想对数列进行排序。根据具体的实现,归并排序包括"从上往下"和"从下往上"2种方式。1.从下往上的归并排序:将待排序的数列分成若干个长度为1的子数列,然后将这些数列两两合并;得到若干个长度为2的有序数列,再将这些数列两两合并;得到若干个长度为4的有序数列,再将它们两两合并;直接合并成一个数列为止。这样就得到了我们想要的排序结果。(参考下面的图2.从上往下的归并排序:它与"从下往上原创 2022-10-12 22:10:37 · 16195 阅读 · 6 评论 -
C语言实现----堆排序
一、堆排序介绍堆排序( Heap Sort )是指利用堆这种数据结构所设计的一种排序算法。因此,学习堆排序之前,有必要了解堆!若读者不熟悉堆,建议先了解堆,然后再来学习本章。我们知道,堆分为"最大堆"和"最小堆"。最大堆通常被用来进行"升序"排序,而最小堆通常被用来进行"降序"排序。鉴于最大堆和最小堆是对称关系,理解其中一种即可。本文将对最大堆实现的升序排序进行详细说明。看本文之前可以看看--->>B站视频讲解最大堆进行升序排序的基本思想:①初始化堆:将数列 a [1... n原创 2022-10-12 19:34:28 · 4000 阅读 · 1 评论 -
C语言实现----选择排序
选择排序( Selectionsort )是一种简单直观的排序算法。它的基本思想是:首先在未排序的数列中找到最小( or 最大)元素,然后将其存放到数列的起始位置;接着,再从剩余未排序的元素中继续寻找最小( or 最大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。原创 2022-10-09 23:05:36 · 591 阅读 · 0 评论 -
C语言实现----希尔排序
一、希尔排序介绍希尔排序( ShellSort )是插入排序的一种,它是针对直接插入排序算法的改进。该方法又称缩小增量排序,因 DL .Shell 于1959年提出而得名。希尔排序实质上是一种分组插入方法。它的基本思想是:对于 n 个待排序的数列,取一个小于 n 的整数 gap ( gap 被称为步长)将待排序元素分成若干个组子序列,所有距离为 gap 的倍数的记录放在同个一组中;然后,对各组内的元素进行直接插入排序。这一趟排序完成之后,每一个组的元素都是有序的。然后减小 gap 的值,并重复执行上述原创 2022-10-07 15:12:05 · 8348 阅读 · 0 评论 -
C语言实现----插入排序
一、直接插入排序介绍直接插入排序( Straight Insertion Sort )的基本思想是:把 n 个待排序的元素看成为一个有序表和一个无序表。开始时有序表中只包含1个元素,无序表中包含有 n -1个元素,排序过程中每次从无序表中取出第一个元素,将它插入到有序表中的适当位置,使之成为新的有序表,重复 n -1次可完成排序过程。原创 2022-10-07 13:46:51 · 1492 阅读 · 0 评论 -
C语言实现--快速排序
快速排序介绍快速排序(Quick Sort)使用分治法策略。它的基本思想是:选择一个基准数,通过一趟排序将要排序的数据分成独立的两部分;其中一部分的所有数据都比另外一部分的所有数据都要小。然后,再按此方法对着两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。原创 2022-10-06 17:14:47 · 18468 阅读 · 5 评论 -
C语言----冒泡排序
冒泡排序(Bubble Sort),又被称为气泡排序或泡沫排序。它是一种较简单的排序算法。他会遍历若干次要排序的数列,每次遍历时,它都会从前往后依次的比较相邻两个数的大小;如果前者比后者大,则交换他们的位置。这样,依次遍历之后,最大的元素就在数列的末尾!采用相同的方法在次遍历时,第二大的元素就被排列在最大元素之前。重复次操作,直到整个数列都有序为止!原创 2022-10-05 18:34:29 · 4686 阅读 · 1 评论 -
排序算法--排序算法综述
排序算法--排序算法综述,表明了各种算法在不同数据规模下,完成排序所消耗的时间(毫秒为单位),从表中可以显然看出O(n2)的排序算法比O(nlog2n)的算法时间多出几百上千倍,而且随着数据规模增大时间比也会随着增大;因为排序的数据采用随机数,顺序将被打乱,快速排序算法优先于其他排序算法。原创 2022-10-05 14:02:09 · 354 阅读 · 0 评论