排序算法及其程序设计 知识点题库

快速排序法是所有排序算法中最高效的一种。
根据“算法思想初探”有关知识,完成填空。

  1. (1) 如图是我国著名数学家华罗庚先生举的一个“烧水泡茶”的例子。“烧水泡茶”运用的是方法,这种方法与算法相结合,可以优化算法的流程。
  2. (2) 中央电视台曾经有一档节目,要求选手在限定时间内猜中某一物品的售价。如果猜中就把物品奖励给选手。例如:猜一种手机的价格,手机价格在500—1000之间。选手开始报价:"800元。”主持人回答:“低了。”

    —900元

    —高了。

    —850元。

    —猜中了。

    由材料可知,报价过程具有一定的技巧性,可以运用查找的算法优化,这种查找需要先找有序数列的,重复操作,一步一步确定一个较小的范围。

  3. (3) 篮球联赛中,有五个班级的比赛积分依次是14,11,13,8,9,采用“冒泡排序法”对比赛积分进行由小到大的排序,第2轮排序的结果为:,14。
  4. (4) 本学期我们学习了算法思想初探,请写出算法的特征:输入项、输出项、
下列选项中,(    )是从第一个元素开始一个一个向下查找,如果有和目标一致的元素,查找成功;如果到最后一个元素仍没有目标元素,则查找失败。
A . 二分查找法 B . 顺序查找法 C . 快速查找法 D . 冒泡排序法
  所谓排序,是在大量信息中寻找一个特定的信息元素。
篮球联赛中,有五个班级的比赛积分依次是11,2,4,9,6,采用“冒泡排序法”对比赛积分进行由小到大的排序,第1轮排序的结果为:,11。
通过“冒泡排序法”,我们得到12、-3、5、9、1这5个数第1轮排序的结果为(    )
A . -3、5、9、1、12 B . -3、12、5、9、1 C . -3、9、5、1、12 D . -3、1、5、9、12
快速排序法采用“分治”的思想,是所有排序算法中最高效的一种。
用冒泡排序法对数据75,55,29,34,23,68,10共七个数,按从小到大升序排列,共需经过(    )轮排序就可以得到正确结果。
A . 4 B . 5 C . 6 D . 7
现今信息化时代,信息的传输十分迅速,足不出户便知天下事。许多社交平台都有设置本平台的热点排行榜,方便用户了解正在发生的热门事件。但社交平台数量众多,平台用户种类和数量也大不相同,导致不同平台热点的实际热度大小也不同。小钟为了确保自己知道的热点是真正的热点,于是打算用功能强大的python把各个平台的热点排行榜进行合并,形成自己的热点排行榜。

为了热点之间比较方便,小钟设置了一个热度值来衡量一个热点的热度大小,热度值越大说明这个热点的热度越高。现在小钟已经获得了如下两个平台的热度值从小到大的排行榜,正当他打算将之合并为一个从小到大的排行榜时,却被老师叫走了。于是他决定把这个小功能交给他的好朋友——你来实现,你想到2种算法,请把下列程序填写完整。

A

P10

P9

P8

P7

P6

P5

P4

P3

P2

P1

11

66

116

329

438

582

652

714

756

925

B

E10

E9

E8

E7

E6

E5

E4

E3

E2

E1

35

116

215

271

309

428

576

772

806

950

Python程序如下:

A= [11,66,116,329,438,582,652,714,756,925]

B = [35,116,215,271,①,428,576,772,806,950]

算法一:

myRank =

i = 0

j = 0

while (i < len(A) and j < len(B)):

  if (A[i] < B[j]):

    ②

    i += 1

  else:

    myRank.append(B[j])

    j += 1

while (i < len(A)):

  myRank.append(A[i])

  i += 1

else:

  while (③):

    myRank.append(B[j])

    j += 1

print(myRank)

算法二:

myRank = [0]*(len(A)+len(B))

i = 0

j = 0

k = 0

while (④):

  k = i+j

  if (i >= len(A)):

    myRank[k] = B[j]

    j += 1

  elif (j >= len(B)):

    myRank[k] = A[i]

    i += 1

  elif (⑤):

    myRank[k] = A[i]

    i += 1

  else:

    myRank[k] = B[j]

    j += 1

print(myRank)

用冒泡排序法对数据77,55,29,34,23,68,7共七个数,按从小到大升序排列,共需经过()轮排序就可以得到正确结果。
A . 3 B . 4 C . 5 D . 6
数组a共有6个元素构成:49、45、61、46、58、57,若采用选择排序算法进行从大到小排序,则元素的比较次数和排序需要几遍才能完成()
A . 15次,4遍 B . 15次,5遍 C . 30次,4遍 D . 30次,5遍
对于任何待排序序列来说,快速排序均快于冒泡排序。
使用冒泡排序算法将10个数字进行降序排列,需要进行(   )次数值比较。
A . 10 B . 45 C . 55 D . 100
以下有关数据排序和编程的说法,错误的是(   )
A . 数据排序就是按照某种逻辑关系将杂乱“无序”数据调整为“有序”数据。 B . 数据排序有利于对信息进行高效地的检索、分类。 C . 编写程序时不需要考虑容错处理,使用者录入错误数据是他自己的责任。 D . 生活中解决问题的方法和计算机的程序算法是可以相互借鉴的。
我们一般采用(   )层循环结构实现冒泡排序算法。
A . 1 B . 2 C . 3 D . 4
关于冒泡排序算法,下述步骤正确的顺序为(    )

①针对所有的元素重复以上的步骤,除了最后一个。
②比较相邻的元素。如果第一个比第二个大,就交换位置。
③持续每次对越来越少的元素重复上面的步骤,直到没有任何—对数字需要比较。
④对每一对相邻元素做同样的工作,从开始第一对到结尾的最后— 对。在这一轮,最后的元素应该会是最大的数。

A . ①②③④ B . ④②③① C . ②④①③ D . ④③②①
冒泡法是一种常用的排序方法,在排序时经常要进行数据的交换。下列四个选项中,(   )不能正确的将x和y两个变量中的数据进行交换。
A . x=y;y=x     B . x=x+y;y=x-y;x=x-y    C . m=x;x=y;y=m   D . m=y;y=x;x=m
有一组数,依次为“27、32、36、25、18”,若采用冒泡排序算法对其进行升序排列,则第二趟排序结果是(    )
A . 18 25 27 32 36 B . 18 25 36 32 27  C . 27 25 18 32 36  D . 18 27 25 32 36