首页 > 试题广场 >

设一组初始关键字记录关键字为(20,15,14,18,21,

[单选题]

设一组初始关键字记录关键字为(2015141821364010),则以20为基准记录的一趟快速排序结束后的结果为(  )

  • 10,15,14,18,20,36,40,21
  • 10,15,14,18,20,40,36,21
  • 10,15,14,20,18,40,36,2l
  • 15,10,14,18,20,36,40,21
2015141821364010
1)设置两个变量i、j,排序开始的时候:i=0,j=7;
2)以20作为关键数据,赋值给key,即key=20;
3)从7开始向前搜索,即由后开始向前搜索(j--),找到第一个小于key的值10,将10和20互换;{1015141821364020}
4)从0开始向后搜索,即由前开始向后搜索(i++),找到第一个大于key的21,将20和21互换;{10151418203640,21}
5)
重复第3,4步中没有找到符合条件的值,使得j=j-1,i=i+1,直至i==j,结束。
发表于 2017-08-24 09:22:53 回复(0)
从两头往中间搜索,右边找小,左边找大,右边先走
第一步:右边找到了10,左边找到了21,交换
第二步:在上面的位置上,右边继续向前,遇到了上一步的10,左右相遇,所以10的位置就是20的基准位,结束
发表于 2018-10-05 15:54:13 回复(0)
发表于 2018-11-25 18:19:51 回复(0)
20,15,14,18,21,36,40,10
1)设置两个变量i、j,排序开始的时候:i=0,j=7;
2)以20作为关键数据,赋值给key,即key=20;
3)从7开始向前搜索,即由后开始向前搜索(j--),找到第一个小于key的值10,将10和20互换;{10,15,14,18,21,36,40,20}
4)从0开始向后搜索,即由前开始向后搜索(i++),找到第一个大于key的21,将20和21互换;{10,15,14,18,20,36,40,21}
5)
重复第3,4步中没有找到符合条件的值,使得j=j-1,i=i+1,直至i==j,结束。
发表于 2018-07-13 19:18:34 回复(0)
妈呀,看我的草稿纸上的结果居然看错了
发表于 2018-04-20 13:50:16 回复(0)
以20为基准记录即该数组初始状态为:20,2015141821364010。进行第一次比较时,首先给初始的数组的位置和尾部各插一个指针,因为尾指针指向10,而10比20小,所以将10放在20的位置(把第一个20不放在数组中,把它取出来,最后将它插入到合适的位置),然后然后头指针指向15,15比20小,然后指向14,14比20小,然后指向18,18比20小,然后指向21,20比20大,将21放在最开始10的位置上,所以结果为A。
发表于 2017-09-14 21:23:00 回复(0)