首页 > 试题广场 >

有些排序算法在每趟排序过程中,都会有一个元素被放置在其最终的

[单选题]

有些排序算法在每趟排序过程中,都会有一个元素被放置在其最终的位置上,下列算法不会出现此情况的是()

  • SHELL排序
  • 堆排序
  • 冒泡排序
  • 快速排序
推荐
选A。
  • 选项A:SHELL排序原理:从n个待排序元素序列首先取一个整数(小于n)作为间隔将全部元素分为若干个子序列,所有距离为increment的元素放在同一个子序列中,在每一个子序列中分别实行直接插入排序。然后缩小间隔increment,重复上述子序列划分和排序工作。直到最后取increment=1,将所有元素放在同一个子序列中排序为止。(是由部分逐渐到整体的过程,所以每一趟确定不了最终排序
  • 选项B:堆排序是依照二叉树的性质构成大顶堆或者小顶堆。arr[i]>=arr[2i+1]&&arr[i]>=arr[2i+2] 或者改成<=。例如大顶堆,整个序列的最大值就是堆顶根节点,将其与末尾元素交换,末尾就是最大值(确定了最终位置),然后剩余的元素继续建堆逐渐确定剩余元素的最终位置
  • 选项C:冒泡排序是n个相邻元素依次比较,每趟确定一个最终位置,剩余的n-1个元素继续相邻比较。
  • 选项D 快速排序的思想通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序。所以每次能确定基准值的位置。
编辑于 2019-10-18 14:34:52 回复(0)
答案选A
解析:
选项A:shell排序,也叫希尔排序,是分组插入排序。一次排序只会把组间对应的位置排好。
              而不一定会确定的排好一个值

选项B:堆排序。大根堆,每次最大的一个位置被排好

选项C:冒泡排序:相邻的比较排序,一次排序会把最大的排好

选项D:快速排序:一次partion过程,会把基准值排好


编辑于 2019-10-17 17:08:56 回复(0)
A
发表于 2018-10-09 11:10:39 回复(0)