搜狗 C++工程师笔试题

时间:2020-12-20 15:07:19 笔试题目 我要投稿

搜狗2016 C++工程师笔试题

  快速排序在下面哪种情况下优势最明显()

搜狗2016 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次划分。

  而在最坏情况下,即数组已经有序或大致有序的情况下,每次划分只能减少一个元素,快速排序将不幸退化为冒泡排序,所以快速排序时间复杂度下界为O(nlogn),最坏情况为O(n^2)。在实际应用中,快速排序的平均时间复杂度为O(nlogn)。

【搜狗2016 C++工程师笔试题】相关文章:

威盛公司软件C++工程师笔试题12-17

2016年c++经典面试题及答案10-03

嵌入式C/C++面试题201611-12

2016年华为认证C/C++笔试题目11-06

华为C++笔试题12-25

联想C++笔试题12-24

Sony C++笔试题12-19

C++笔试题目分享12-20

华为c/c++笔试题12-19