#GESP134. GESP四级第三次训练题单

GESP四级第三次训练题单

  1. 排序算法是稳定的(Stable Sorting),就是指排序算法可以保证,在待排序数 据中有两个相等记录的关键字 R 和 S(R 出现在 S 之前),在排序后的列表中 R 也一定在 S 前。下面关于排序稳定性的描述,正确的是( )。{{ select(1) }}
  • 冒泡排序是不稳定的。
  • 插入排序是不稳定的。
  • 选择排序是不稳定的。
  • 以上都不正确。
  1. 在下列代码的横线处填写( ),可以使得输出是“20 10”。 image {{ select(2) }}
  • int x, int y
  • int * x, int * y
  • int a, int b
  • int & a, int &
  1. 在下列代码的横线处填写( ),完成对有 n 个 int 类型元素的数组 array 由 小到大排序。 image {{ select(3) }}
  • array[min] > array[j]
  • array[min] > array[i]
  • min > array[j]
  • min > array[i]
  1. 在 C++语言中,如果一个函数可能抛出异常,那么一定要在 try 子句里调用这 个函数。() {{ select(4) }}
  • 正确
  • 错误
  1. 对包含n个元素的数组进⾏冒泡排序 ,平均时间复杂度一般为( )。 {{ select(5) }}
  • O(n)
  • O(n log n)
  • O(n²)
  • 以上都不正确
  1. 下列关于C++语言中异常处理的叙述,正确的是( ){{ select(6) }}
  • ⼀个try子句可以有多个catch子句与之对应。
  • 如果try子句在执行时发生异常 ,就⼀定会进入某⼀个catch子句执行。
  • 如果try子句中没有可能发生异常的语句 ,会产生编译错误。
  • catch 子句处理异常后 ,会重新执行与之对应的try子句。
  1. 在下列代码的横线处填写( ),完成对有 n个int类型元素的数组 array 由小到大排序。{{ select(7) }} image
  • int j = 1; j < n; j++
  • int j = 0; j < n; j++
  • int j = 0; j < i - 1; j++
  • int j = 0; j < i; j++
  1. 对N个元素的数组执行插入排序算法 ,通常的时间复杂度是O(n²)。() {{ select(8) }}
  • 正确
  • 错误
  1. 一个可能抛出异常的函数,调用它的位置没有在try子句中,会引起编译错误。() {{ select(9) }}
  • 正确
  • 错误
  1. C++的内置函数 sort() 支持数组的局部排序。例如 int a={10,9,8,7,6,5,4,3,2,1} ,可以用sort(a,a+5) ,排序成 {6,7,8,9,10,5,4,3,2,1} 。( ) {{ select(10) }}
  • 正确
  • 错误
  1. 用递归法求 n 的阶乘,时间复杂度是O (n)。 {{ select(11) }}
  • 正确
  • 错误
  1. C++内置函数 sort() 可以对整数、浮点数、字符数组进行从大到小,从小到大,局部排序。( ){{ select(12) }}
  • 正确
  • 错误
  1. 插入排序在最好情况下的时间复杂度是( )。 {{ select(13) }}
  • O(1)
  • O(N/2)
  • O(N)
  • O(N2^2)
  1. int a[]={2,0,2,4,3,1,6} ,执行第一趟选择排序处理后 a 中数据变为 {0,2,2,4,3,1,6} 。( ) {{ select(14) }}
  • 正确
  • 错误
  1. 如果待排序数据不能都装进内存,需要使用外排序算法。( ) {{ select(15) }}
  • 正确
  • 错误
  1. 在C++语言中 try 子句里抛出的结构体等类型的异常无法被 catch 捕获。( ){{ select(16) }}
  • 正确
  • 错误
  1. 关于直接插入排序,下列说法错误的是( )

{{ select(17) }}

  • 插入排序的最好情况是数组已经有序,此时只需要进行n-1次比较,时间复杂度为O(n)
  • 最坏情况是数组逆序排序,此时需要进行n(n-1)/2 次比较以及n-1次赋值操作(插入)
  • 平均来说插入排序算法的复杂度为O(n2n^2)
  • 空间复杂度上,直接插入法是就地排序,空间复杂度为O(n)
  1. 关于几种排序算法的说法,下面说法错误的是( )。

    {{ select(18) }}

  • 选择排序不是一个稳定的排序算法
  • 冒泡排序算法不是一种稳定的排序算法
  • 插入排序是一种稳定的排序算法
  • 如果排序前2个相等的数在序列中的前后位置顺序和排序后它们2个的前后位置顺序相同,则称为一种稳定的排序算法
  1. 数组{45,66,23,1,10,97,52,88,5,33}进行从小到大冒泡排序过程中,第一遍冒泡过后的序列是( ){{ select(19) }}
  • {45,23,1,10,66,52,88,5,33,97}
  • {45,66,1,23,10,97,52,88,5,33}
  • {45,66,23,1,10,52,88,5,33,97}
  • {45,66,23,1,10,97,52,88,33,5}
  1. 下面的排序算法程序中,横线处应该填入的是( )。 image {{ select(20) }}
  • a[j]=a[j-1];
  • a[j]=a[j+1];
  • a[j+1]=a[j-1];
  • a[j+1]=a[j];
  1. 下面的程序中,如果输入 10 0 ,会输出( )

    image {{ select(21) }}

  • Division by zero condition!
  • 0
  • 10
  • 100
  1. 插入排序算法中,平均时间复杂度是O(n2n^2) ,最坏的情况逆序情况下,达到最大时间复杂度。( )。

{{ select(22) }}

  • 正确
  • 错误