摘要: 标签 稳定排序、非原地排序、非比较排序 基本思想 桶排序也是分配排序的一种,但其是基于比较排序的,这也是与基数排序最大的区别所在。 桶排序也是计数排序的升级版。它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。 桶排序算法想法类似于散列表。首先要假设待排序的元素输入符合某种均匀分布,例 阅读全文
posted @ 2020-11-14 17:08 箐茗 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 标签 稳定排序、非原地排序、非比较排序 基本思想 基数排序也是非比较类线性排序算法,对每一位进行排序,从最低位开始排序,复杂度为$O(kn)$,为数组长度,$k$为数组中的数的最大的位数; 基数排序是按照低位先排序,然后收集;再按照高位排序,然后再收集;依次类推,直到最高位。有时候有些属性是有优先级 阅读全文
posted @ 2020-11-14 16:53 箐茗 阅读(691) 评论(0) 推荐(0) 编辑
摘要: 标签 稳定排序、非原地排序、非比较排序 基本思想 计数排序是一个非基于比较的排序算法,该算法于1954年由 Harold H. Seward 提出,它的优势在于对较小范围内的整数排序。它的复杂度为$Ο(n + k)$(其中$k$是待排序数的范围),快于任何比较排序算法,缺点就是非常消耗空间。很明显, 阅读全文
posted @ 2020-11-14 16:43 箐茗 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 标签 非稳定排序、原地排序、比较排序 基本思想 直接选择排序中,第一次选择经过了$n - 1$次比较,只是从排序码序列中选出了一个最小的排序码,而没有保存其他中间比较结果。所以后一趟排序时又要重复许多比较操作,降低了效率。J. Willioms和Floyd在1964年提出了堆排序方法,避免这一缺点。 阅读全文
posted @ 2020-11-14 16:28 箐茗 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 标签 非稳定排序、原地排序、比较排序 基本思想 冒泡排序是在相邻的两个记录进行比较和交换,每次交换只能上移或下移一个位置,导致总的比较与移动次数较多。快速排序是目前应用最广泛的排序算法之一。快速排序又称分区交换排序,是对冒泡排序的改进,快速排序采用的思想是分治思想。 每次从待排序区间选取一个元素(一 阅读全文
posted @ 2020-11-14 16:14 箐茗 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 标签 非稳定排序、原地排序、比较排序 基本思想 希尔排序是希尔(Donald Shell) 于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是直接插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序,同时该算法是冲破$O(n^2)$的第一批算法之一。它与插入排序的不同之处在于,它会 阅读全文
posted @ 2020-11-14 16:04 箐茗 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 可变参数 可变参数即表示参数的个数可以变化,可多可少,也表示参数的类型也可以变化,可以是int,double还可以是char*,类,结构体等等。printf(),sprintf()等函数的实现就使用了可变参数,可变参数还可以用来对任意数量的数据进行求和、求平均值,非常方便(不然就用数组或每种写个重载 阅读全文
posted @ 2020-11-14 00:20 箐茗 阅读(975) 评论(0) 推荐(1) 编辑