搜狗c++工程师笔试题.docVIP

  • 3
  • 0
  • 约小于1千字
  • 约 2页
  • 2020-04-01 发布于四川
  • 举报
搜狗C++工程师笔试题      快速排序在下面哪种情况下优势最明显()      A数据有多个相同数值      B数据基本有序      C数据基本无序      D数据无任何相同数值      先思考一下再看答案吧!      因为总是会有人一看题目就看到答案了      这样就很影响自己的思考      既然这样      我们就思考一下再往下看      参考答案:C      快速排序属于内部排序;      快速排序的实现基于分治法,具体分为三个步骤。假设待排序的序列为L[m..n]。      分解:序列L[m..n]被划分成两个可能为空的子序列L[m..pivot-1]和L[pivot+1..n],使L[m..pivot-1]的每个元素均小于或等于L[pivot],同时L[pivot+1..n]的每个元素均大于L[pivot]。其中L[pivot]称为这一趟分割中的主元(也称为枢轴、支点)。      解决:通过递归调用快速排序,对子序列L[m..pivot-1]和L[pivot+1..r]排序。      合并:由于两个子序列是就地排序的,所以对它们的合并不需要操作,整个序列L[m..n]已排好序。      快速排序每次将待排序数组分为两个部分,在理想状况下,每一次都将待排序数组划分成等长两个部分,则需要logn次划分。  

文档评论(0)

1亿VIP精品文档

相关文档