排序算法
文章平均质量分 81
我只是一只自动小青蛙
这个作者很懒,什么都没留下…
展开
-
排序算法:习题篇
剑指 Offer 45. 把数组排成最小的数输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。1、思路此题求拼接起来的最小数字,本质上是一个排序问题。设数组 numsnums 中任意两数字的字符串为 x 和 y ,则规定排序判断规则为:若拼接字符串 x + y > y + x ,则 x “大于” y ;反之,若 x + y < y + x ,则 x “小于” y ;x “小于” y 代表:排序完成后,数组中 x 应在 y 左边;“大于.原创 2021-06-24 23:53:05 · 483 阅读 · 0 评论 -
排序算法(三):时间复杂度O(n)的排序算法
O(n) 级的排序算法存在已久,但他们只能用于特定的场景一、计数排序计数排序限制:举个例子,我们需要对一列数组排序,这个数组中每个元素都是 [1, 9]区间内的整数。那么我们可以构建一个长度为 9 的数组用于计数,计数数组的下标分别对应区间内的 9 个整数。然后遍历待排序的数组,将区间内每个整数出现的次数统计到计数数组中对应下标的位置。最后遍历计数数组,将每个元素输出,输出的次数就是对应位置记录的次数。计数排序限制:数据需要分布在一定的范围内1、算法步骤举个例子,班上有 1010 名同学:他们的原创 2021-06-24 16:38:23 · 5772 阅读 · 0 评论 -
排序算法(二):时间复杂度为O(nlogn)的排序算法
一、希尔排序(实际上很少用到,了解即可)1、算法步骤将待排序数组按照一定的间隔进行排序,如此时排序间隔为gap:则从index=gap处的元素开始排序;对于index = i的元素,每次和当前index - gap处的元素进行比较,直到符合插入条件;然后继续比较index = i++的元素,直到数组末尾,完成当前间隔的排序逐渐缩小间隔进行下一轮排序最后一轮时,取间隔为 1,也就相当于直接使用插入排序。但这时经过前面的「宏观调控」,数组已经基本有序了,所以此时的插入排序只需进行少量交换便可完成原创 2021-06-24 13:06:24 · 8672 阅读 · 1 评论 -
排序算法(一):时间复杂度为O(n^2)的排序算法
零、基本概念1、排序算法的稳定性假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i] = r[j],且r[i]在 r[j] 之前,而在排序后的序列中,r[i]仍在 r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。一、冒泡排序1、算法步骤比较相邻的元素。如果第一个比第二个大,就交换他们两个。(内层循环)对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数(外层循环)原创 2021-06-23 00:34:00 · 1647 阅读 · 1 评论