排序算法
吴俊荣
我是一个非常非常懒的人
展开
-
数据结构——排序算法——桶排序
2.桶的数据结构: 如果将桶的数据结构设置为数组,那么每个桶的长度必须设置为待排序数组的长度,因为我们需要做好最坏的打算,即所有的数字都被装入了同一个桶中,所以这种方案的空间复杂度会很高。1.桶的数量:桶的数量过少,会导致单个桶内的数字过多,桶排序的时间复杂度就会在很大程度上受桶内排序算法的影响。桶的数量过多,占用的内存就会较大,并且会出现较多的空桶,影响遍历桶的效率。在最差的情况下,所有数据都会被装入同一个桶中,此时桶排序算法只会徒增一轮遍历。这两个因素会直接影响到桶排序的内存和效率。原创 2023-09-14 15:20:15 · 227 阅读 · 0 评论 -
数据结构——排序算法——基数排序
基数排序有两种实现方式。本例属于最高位优先法,思路是从最高位开始,依次对基数进行排序。与之对应的是「最低位优先法」,思路是从最低位开始,依次对基数进行排序。基数排序可以分为以下三个步骤:1.找到数组中的最大值,确定最大数字的位数2.从最低位开始,对数组进行计数排序。计数排序是稳定排序,所以在每一位排序后,相同数值的元素仍然保持相对顺序。3.重复上述步骤,逐渐向更高位进行排序,直到完成所有位的排序。4.最终,数组中的元素将按照各个位上的数值排序,从而得到有序数组.原创 2023-09-14 14:26:39 · 326 阅读 · 1 评论 -
数据结构——排序算法——计数排序
计数排序就是一种时间复杂度为 O(n) 的排序算法,该算法于 1954 年由 Harold H. Seward 提出。在对一定范围内的整数排序时,它的复杂度为 O(n+k)(其中 k 是整数的范围大小)。原创 2023-09-14 14:00:17 · 476 阅读 · 0 评论 -
数据结构——排序算法——归并排序
我们可以把数组不断地拆成两份,直到只剩下一个数字时,这一个数字组成的数组我们就可以认为它是有序的。然后通过上述合并有序列表的思路,将 1 个数字组成的有序数组合并成一个包含 2 个数字的有序数组,再将 2 个数字组成的有序数组合并成包含 4 个数字的有序数组…直到整个数组排序完成。在第二个列表向第一个列表逐个插入的过程中,由于第二个列表已经有序,所以后续插入的元素一定不会在前面插入的元素之前。在逐个插入的过程中,每次插入时,只需要从上次插入的位置开始,继续向后寻找插入位置即可。原创 2023-09-13 17:31:15 · 543 阅读 · 1 评论 -
数据结构——排序算法——快速排序
快速排序算法的基本思想是1.从数组中取出一个数,称之为基数(pivot)2.遍历数组,将比基数大的数字放到它的右边,比基数小的数字放到它的左边。遍历完成后,数组被分成了左右两个区域3.将左右两个区域视为两个数组,重复前两个步骤,直到排序完成。原创 2023-09-13 16:47:44 · 288 阅读 · 0 评论 -
数据结构——排序算法——堆排序
1.从 0 开始,将每个数字依次插入堆中,一边插入,一边调整堆的结构,使其满足大顶堆的要求;2.将整个数列的初始状态视作一棵完全二叉树,自底向上调整树的结构,使其满足大顶堆的要求。2.调整剩余的数字,构建出新的大顶堆,再次取出堆顶的数字;1.用数列构建出一个大顶堆,取出堆顶的数字;3.循环往复,完成整个排序。原创 2023-09-12 17:43:22 · 292 阅读 · 1 评论 -
数据结构——排序算法——希尔排序
对他们进行插入排序,排序后它们分别变成:[50,60,61,83,87],[70,80,84,88,99],此时整个数组变成 [50,70,60,80,61,84,83,88,87,99]。对它们进行插入排序,排序后它们分别变成: [50,84],[70,83],[60,88],[80,87],[61,99],此时整个数组变成 [50,70,60,80,61,84,83,88,87,99]排序后数组变成[50,60,61,70,80,83,84,87,88,99],整个排序完成。原创 2023-09-12 17:11:40 · 686 阅读 · 1 评论 -
数据结构——排序算法——插入排序
【代码】数据结构——排序算法——插入排序。原创 2023-09-12 16:25:39 · 438 阅读 · 2 评论 -
数据结构——排序算法——选择排序
【代码】数据结构——排序算法——选择排序。原创 2023-09-12 15:55:51 · 41 阅读 · 0 评论 -
数据结构——排序算法——冒泡排序
【代码】数据结构——排序算法——冒泡排序。原创 2023-09-12 15:52:49 · 224 阅读 · 0 评论