数据结构与算法-第八章 归并排序和基数排序(思想)

归并排序的基本思想

将两个或两个以上的有序子序列"归并"为一个有序序列;
在内部排序中,通常采用2-路归并排序

归并排序

"归并树":归并过程抽象出来的树
归并排序的趟数就是"归并树的高度";
若有n个记录,则整个归并排序仅需"log~2~n";
代码之后再放...
归并排序算法效率分析
时间效率: O(nlog~2~n);
空间效率: O(n);
	因为需要一个与原始序列同样大小的辅助序列(R1),这正是此算法的缺点;
稳定性: 稳定;

基数排序的基本思想

分配+收集
也叫桶排序或箱排序: 设置若干个箱子,将关键字为k的记录放入第k个箱子,然后再按序号将非空的连接.

基数排序: 数字是有范围的,均由0-9这十个数字组成,则只需设置十个箱子,相继按个,,...进行排序
	若存在一组序列中所有的记录最高位是百位:
	第一趟: 按照个位上的数字,放入相应的箱子中,所有记录放入箱子后,依次收集回来;
	第二趟: ,在第一趟收集回来的序列上,按十位上的数字,放入相应的箱子中,然后再收集回来;
	第三趟: 在第二趟收集回来的序列上,按按百位上的数字,放入相应的箱子中,然后再来一次收集;
基数排序算法分析
分配趟数: 根据记录的个数而变化
时间效率: O(k*(n+m))		k:个十百的位数,m:桶的个数
空间效率: O(n+m)
稳定性: 稳定;

你可能感兴趣的:(算法,排序算法,java)