有一种简单的排序算法,叫做计数排序。这种排序算法对一个待排序的表进行排序,并将排序结果存放到另一个新的表中。必须注意的是,表中所有待排序的关键字互不相同,计数排序算法针对表中的每个记录,扫描待排序的表一趟,统计表中有多少个记录的关键字比该记录的关键字小。假设针对某一个记录,统计出的计数值为c,那么,这个记录在新的有序表中的合适的存放位置即为c。① 给出适用于计数排序的顺序表定义;② 编写实现计数排序的算法;③ 对于有n个记录的表,关键字比较次数是多少?④ 与简单选择排序相比较,这种方法是否更好?为什么?

题目

有一种简单的排序算法,叫做计数排序。这种排序算法对一个待排序的表进行排序,并将排序结果存放到另一个新的表中。必须注意的是,表中所有待排序的关键字互不相同,计数排序算法针对表中的每个记录,扫描待排序的表一趟,统计表中有多少个记录的关键字比该记录的关键字小。假设针对某一个记录,统计出的计数值为c,那么,这个记录在新的有序表中的合适的存放位置即为c。

① 给出适用于计数排序的顺序表定义;

② 编写实现计数排序的算法;

③ 对于有n个记录的表,关键字比较次数是多少?

④ 与简单选择排序相比较,这种方法是否更好?为什么?


相似考题
更多“有一种简单的排序算法,叫做计数排序。这种排序算法对一个待排序的表进行排序,并将排序结果存放 ”相关问题
  • 第1题:

    2、关于排序算法说法不正确的是()。

    A.冒泡排序和选择排序都属于交换类的排序算法。

    B.冒泡排序是一种稳定的排序算法。

    C.对于同一个待排序列进行排序,使用选择排序比冒泡排序具有更少的元素交换次数。

    D.冒泡排序是一种通过多次选择最值并把它交换至数列一端,最终使数列达到有序的排序算法。


    冒泡排序是一种通过多次选择最值并把它交换至数列一端,最终使数列达到有序的排序算法。

  • 第2题:

    2、请对元素序列27, 6, 32, 48, 26, 17, 63进行排序(注意:不要写错关键字造成扣分): (1) 请用直接插入排序算法进行排序,写出第一趟排序结果:____________。 (2) 请用冒泡排序算法进行排序,写出第一趟排序结果:____________。 (3) 请用两路合并排序算法进行排序,写出第一趟排序结果:____________。 (4) 请用快速排序算法进行排序,写出第一趟排序结果:____________。


    B

  • 第3题:

    对初始状态为递增序列的表按递增顺序排序,最省时间的是 算法,最费时间的是 算法。

    A.堆排序、简单选择排序

    B.直接插入排序、快速排序

    C.快速排序、合并排序

    D.堆排序


    快速排序

  • 第4题:

    17、假设待排序的表长为n,那么下列排序算法中,()排序算法需要O(n)的辅助空间。

    A.简单选择

    B.插入

    C.冒泡

    D.归并


    归并

  • 第5题:

    以下排序算法中,适合记录个数很大,但待排序关键字位数很少的排序算法是()。

    A.快速排序

    B.归并排序

    C.堆排序

    D.基数排序


    A