itgle.com

有一种简单的排序算法,叫做计数排序。这种排序算法对一个待排序的表(用数组表示)进行排序,并将排序结果存放到另一个新的表中。必须注意的是,表中所有待排序的关键字互不相同,计数排序算法针对表中的每个元素,扫描待排序的表一趟,统计表中有多少个元素的关键字比该元素的关键字小。假设对某一个元素,统计出该数值为c,那么这个元素在新的有序表中的合适的存放位置即为c。 (1)设计实现计数排序的算法。 (2)对于有n个元素的表,比较次数是多少? (3)与简单选择排序相比,哪种方法是否更好?为什么?

题目

有一种简单的排序算法,叫做计数排序。这种排序算法对一个待排序的表(用数组表示)进行排序,并将排序结果存放到另一个新的表中。必须注意的是,表中所有待排序的关键字互不相同,计数排序算法针对表中的每个元素,扫描待排序的表一趟,统计表中有多少个元素的关键字比该元素的关键字小。假设对某一个元素,统计出该数值为c,那么这个元素在新的有序表中的合适的存放位置即为c。 (1)设计实现计数排序的算法。 (2)对于有n个元素的表,比较次数是多少? (3)与简单选择排序相比,哪种方法是否更好?为什么?


相似考题
更多“有一种简单的排序算法,叫做计数排序。这种排序算法对一个待排序的表(用数组表示)进行排序,并将排序结果存放到另一个新的表中。必须注意的是,表中所有待排序的关键字互不相同,计数排序算法针对表中的每个元素,扫描待排序的表一趟,统计表中有多少个元素的关键字比该元素的关键字小。假设对某一个元素,统计出该数值为c,那么这个元素在新的有序表中的合适的存放位置即为c。 (1)设计实现计数排序的算法。 (2)对于有n个元素的表,比较次数是多少? (3)与简单选择排序相比,哪种方法是否更好?为什么?”相关问题
  • 第1题:

    若排序前后关键字相同的两个元素相对位置不变,则称该排序方法是稳定的。下列排序算法中,有(14)种排序算法是稳定的:归并排序、快速排序、希尔排序、堆排序、基数排序、直接插入排序、冒泡排序、直接选择排序。

    A.3

    B.4

    C.5

    D.6


    正确答案:B
    解析:此题考察考生对稳定排序概念的理解。稳定排序算法是指在排序过程中两个排序关键字相同的元素,在排序的过程中位置不发生变化。例如对数列:62,42,12,36,4,12,67进行排序时,第一个12在排序完毕以后要排在第二个12的前面,这就是稳定的排序。有些人可能会发出疑问:既然都是12,为什么一定要保证它的顺序呢?举一个简单的例子:如果组织一次有奖答题活动,选手在电脑上答完题以后,就直接提交数据,最后按答题得分奖励前:100名参赛选手,这样会出现一个问题,即如果同时有10个人并列第100名,而我们只能给一个人发奖,到底给谁发呢?最合理的判断标准是给先提交答案的人发奖。这样稳定排序就可以用上了。以上的这些排序算法中,归并排序、基数排序、直接插入排序和冒泡排序是稳定的,其它的都不稳定。

  • 第2题:

    ● 如果待排序序列中两个元素具有相同的值,在排序前后它们的相互位置发生颠倒,则称该排序算法是不稳定的。 (41) 是稳定的排序方法,因为这种方法在比较相邻元素时,值相同的元素并不进行交换。

    (41)

    A. 冒泡排序

    B. 希尔排序

    C. 快速排序

    D. 简单选择排序


    正确答案:A

  • 第3题:

    排序算法的稳定性是指( )。

    A.经过排序后,能使关键字相同的元素保持原顺序中的相对位置不变
    B.经过排序后,能使关键字相同的元素保持原顺序中的相对位置改变
    C.排序算法的性能与被排序元素个数关系不大
    D.排序算法的性能与被排序元素个数关系密切

    答案:A
    解析:
    排序算法的稳定性是指排序后关键字相同的元素保持原顺序中的相对位置不变。

  • 第4题:

    对于n个元素构成的线性表,采用简单选择排序共需进行()趟排序。


    正确答案:n-1

  • 第5题:

    每次直接或通过基准元素间接比较两个元素,若出现逆序排列时就交换它们的位置,此种排序方法叫做()排序;每次使两个相邻的有序表合并成一个有序表的排序方法叫做()排序。


    正确答案:快速;归并

  • 第6题:

    排序算法中,从尚未排序序列中依次取出元素与已排序序列(初始为空)中的元素进行比较(要求比较次数尽量少),然后将其放入已排序序列的正确位置的方法是()

    • A、折半插入排序
    • B、直接插入排序
    • C、归并排序
    • D、选择排序

    正确答案:A

  • 第7题:

    排序算法中,从尚未排序序列中依次取出元素与已排序序列(初始为空)中的元素进行比较(要求比较次数尽量少),然后将其放入已排序序列的正确位置的方法是()


    正确答案:折半插入排序

  • 第8题:

    如果待排序序列中两个数据元素具有相似的值,在排序前后它们的相互位置发生颠倒,则称该排序算法是不稳定的,()就是不稳定的排序算法。

    • A、起泡排序
    • B、归并排序
    • C、Shell排序
    • D、直接插入排序
    • E、简单选择排序

    正确答案:C,E

  • 第9题:

    填空题
    对用数组存储的线性表(16,15,32,11,6,30),用快速排序算法进行由小到大排序,若排序下标范围为0~5,选择元素16作为支点,调用一趟快速排序算法后,元素16在数组中的下标位置为()

    正确答案: 3
    解析: 暂无解析

  • 第10题:

    填空题
    每次从无序表中取出一个元素,把它插入到有序表中的适当位置,此种排序方法叫做()排序;每次从无序表中挑选出一个最小或最大元素,把它交换到有序表的一端,此种排序方法叫做()排序。

    正确答案: 插入,堆
    解析: 暂无解析

  • 第11题:

    单选题
    数据表中有10000个元素,如果仅要求求出其中最大的10个元素,则采用()算法最节省时间。
    A

    冒泡排序

    B

    快速排序

    C

    简单选择排序

    D

    堆排序


    正确答案: A
    解析: 暂无解析

  • 第12题:

    单选题
    在所有排序方法中,关键字比较的次数与记录的初始排列次序无关的是__(1)__。从未排序序列中依次取出元素与已排序序列(初始时为空)中的元素进行比较,将其放入已排序序列的正确位置上的方法,称为__(2)__。设有1000个无序的元素,希望用最快的速度挑选出其中前10个最大的元素,最好选用__(3)__排序法。空白(2)处应选择()
    A

    希尔排序

    B

    起泡排序

    C

    插入排序

    D

    选择排序


    正确答案: D
    解析: 暂无解析

  • 第13题:

    在每一趟排序过程中,都将待排序序列中最大关键字选出来,并将它从待排序序列中剔除,继续对剩余元素进行同样操作的排序方法,这种排序方法称为( )。

    A.基数排序

    B.堆排序

    C.起泡排序

    D.选择排序


    正确答案:B
    解析:若将堆看成一个完全二叉树对应的序列,则完全二叉树中所有非终端结点的值均不大于(不小于)其左右孩子结点的值。堆排序每次都选出最大或最小的结点。

  • 第14题:

    快速排序算法在排序过程中,在待排序数组中确定一个元素为基准元素,根据基准元素把待排序数组划分成两个部分,前面一部分元素值小于等于基准元素,而后面一部分元素值大于基准元素。然后再分别对前后两个部分进一步进行划分。根据上述描述,快速排序算法采用了( )算法设计策略。已知确定基准元素操作的时间复杂度为Θ(n),则快速排序算法的最好和最坏情况下的时间复杂度为(请作答此空)。


    答案:D
    解析:
    快速排序采用分治法的思想。快速排序最好情况的时间复杂度是O(nlog2n)。最坏情况下,即初始序列按关键字有序或者基本有序时,快速排序的时间复杂度为O(n2)。

  • 第15题:

    数据表中有10000个元素,如果仅要求求出其中最大的10个元素,则采用()算法最节省时间。

    • A、冒泡排序
    • B、快速排序
    • C、简单选择排序
    • D、堆排序

    正确答案:D

  • 第16题:

    如果待排序序列中两个数据元素具有相同的值,在排序前后它们的相互位置发生颠倒,则称该排序算法是不稳定的,()就是不稳定的排序方法。

    • A、起泡排序
    • B、归并排序
    • C、Shell排序
    • D、直接插入排序
    • E、简单选择排序

    正确答案:C,E

  • 第17题:

    下列排序算法中,哪种排序方法在一趟结束后不一定能选出一个元素放在其最终位置上。()

    • A、 简单选择排序
    • B、 冒泡排序
    • C、 归并排序
    • D、 堆排序

    正确答案:C

  • 第18题:

    排序算法中,从尚未排序序列中依次取出元素与已排序序列(初始为空)中的元素进行比较,然后将其放入已排序序列的正确位置的方法是()

    • A、冒泡排序
    • B、直接插入排序
    • C、归并排序
    • D、选择排序

    正确答案:B

  • 第19题:

    对用数组存储的线性表(16,15,32,11,6,30),用快速排序算法进行由小到大排序,若排序下标范围为0~5,选择元素16作为支点,调用一趟快速排序算法后,元素16在数组中的下标位置为()


    正确答案:3

  • 第20题:

    一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完,这种排序算法被称为()。

    • A、冒泡排序
    • B、选择排序
    • C、插入排序
    • D、快速排序

    正确答案:B

  • 第21题:

    单选题
    一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完,这种排序算法被称为()。
    A

    冒泡排序

    B

    选择排序

    C

    插入排序

    D

    快速排序


    正确答案: D
    解析: 暂无解析

  • 第22题:

    填空题
    每次直接或通过基准元素间接比较两个元素,若出现逆序排列时就交换它们的位置,此种排序方法叫做()排序;每次使两个相邻的有序表合并成一个有序表的排序方法叫做()排序。

    正确答案: 快速,归并
    解析: 暂无解析

  • 第23题:

    单选题
    在所有排序方法中,关键字比较的次数与记录的初始排列次序无关的是__(1)__。从未排序序列中依次取出元素与已排序序列(初始时为空)中的元素进行比较,将其放入已排序序列的正确位置上的方法,称为__(2)__。设有1000个无序的元素,希望用最快的速度挑选出其中前10个最大的元素,最好选用__(3)__排序法。空白(1)处应选择()
    A

    希尔排序

    B

    起泡排序

    C

    插入排序

    D

    选择排序


    正确答案: D
    解析: 暂无解析

  • 第24题:

    单选题
    下列内部排序算法中在初始序列已基本有序(除去n个元素中的某k个元素后即呈有序,k<
    A

    快速排序

    B

    直接插入排序

    C

    二路归并排序

    D

    简单选择排序E.起泡排序F.堆排序


    正确答案: C
    解析: