跳到主要内容

十三:基数排序,以空间换时间的稳定式排序,速度很快。

前言

基数排序,属于桶排序的一种,是一种典型的空间换取时间的 稳定式排序。

一、基数排序(桶排序)介绍

1、 基数排序(radixsort)属于**“分配式排序”(distributionsort),又称“桶子法”(bucketsort)或binsort,顾名思义,它是通过键值的各个位的值,将要排序的元素分配至某些“桶”中,达到排序的作用;
2、 基数排序法是属于
稳定性的排序,基数排序法的是效率高的稳定性排序法;
3、 基数排序(RadixSort)是
桶排序的扩展**;
4、 基数排序是1887年赫尔曼·何乐礼发明的它是这样实现的:将整数按位数切割成不同的数字,然后按每个位数分别比较;

二、基数排序基本思想

1、 将所有待比较数值统一为同样的数位长度,数位较短的数前面补零;
2、 然后,从最低位开始,依次进行一次排序;
3、 这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列;
4、 这样说明,比较难理解,下面我们看一个图文解释,理解基数排序的步骤;

三、图文解释

将数组{53, 3, 542, 748, 14, 214} 使用基数排序, 进行升序排序。
数组的初始状态 array = {53, 3, 542, 748, 14, 214}

3.1 第 1 次排序

  • 第1轮排序规则:

1、 将**每个元素的个位数取出,然后看这个数应该放在哪个对应的桶**(一个一维数组);
2、 按照这个桶的顺序(一维数组的下标依次取出数据,放入原来数组);

  • 排序结果:
    数组的第1轮排序结果 array = {542, 53, 3, 14, 214, 748}

 

3.2 第 2 次排序

  • 第2轮排序规则:
    (1) 将每个元素的十位数取出,然后看这个数应该放在哪个对应的桶(一个一维数组)