基本思想:将两个或两个以上的有序子序列“归并”为一个有序序列,在内部排序中,通常采用2-路归并排序,即将两个位置相邻的有序子序列R[1~m]和R[m+1~n]归并为一个有序序列R[1~n]。
例:{48,,34,60,75,12,26,48'}
整个归并排序需要趟。
基本思想:分配+收集
也叫桶排序或箱排序,设置若干个箱子,将关键字为k的记录放入低k个箱子,然后按序号将非空的连接。
基数排序:数字是有范围的,均由0~9这十个数字组成,则只需设置十个箱子,相继按个、十、百……进行排序。
例:{614,738,921,485,637,101,215,790,306}
第一趟分配(按个位):
e[0] | e[1] | e[2] | e[3] | e[4] | e[5] | e[6] | e[7] | e[8] | e[9] |
530 790 | 921 101 | 614 | 485 215 | 306 | 637 | 738 |
第一趟收集:{530,790,921,101,614,485,215,306,637,738}
第二趟分配(按百位):
e[0] | e[1] | e[2] | e[3] | e[4] | e[5] | e[6] | e[7] | e[8] | e[9] |
101 306 | 614 215 | 921 | 530 637 738 | 485 | 790 |
第二趟收集:{101,306,614,215,921,530,637,738,485,790}
第三趟分配(按千位):
e[0] | e[1] | e[2] | e[3] | e[4] | e[5] | e[6] | e[7] | e[8] | e[9] |
101 | 215 | 306 | 485 | 530 | 614 637 | 738 790 | 921 |
第三趟收集:{101,215,306,485,530,614,637,738,790,921}