设一组初始记录关键字序列(5,2,6,3,8),以第一个记录关键字5为基准进行一趟快速排序的结果为( ).(A) 2,3,5,8,6 (B) 3,2,5,8,6(C) 3,2,5,6,8 (D) 2,3,6,5,8 我需要详细的步骤和原理.刚学写这东西,还冒咋搞
设一组初始记录关键字序列(5,2,6,3,8),以第一个记录关键字5为基准进行一趟快速排序的结果为( ).(A) 2,3,5,8,6 (B) 3,2,5,8,6(C) 3,2,5,6,8 (D) 2,3,6,5,8 我需要详细的步骤和原理.刚学写这东西,还冒咋搞
设一组初始记录关键字序列(5,2,6,3,8),以第一个记录关键字5为基准进行一趟快速排序的结果为( ).
(A) 2,3,5,8,6 (B) 3,2,5,8,6
(C) 3,2,5,6,8 (D) 2,3,6,5,8 我需要详细的步骤和原理.刚学写这东西,还冒咋搞懂,
要是你能再举几个例子更好了.
设一组初始记录关键字序列(5,2,6,3,8),以第一个记录关键字5为基准进行一趟快速排序的结果为( ).(A) 2,3,5,8,6 (B) 3,2,5,8,6(C) 3,2,5,6,8 (D) 2,3,6,5,8 我需要详细的步骤和原理.刚学写这东西,还冒咋搞
先将基准5用一个中间变量保存,接着用前后两个标志,一个从前往后,另外一个从后往前,下面循环步骤执行的前提是前标志的位置小于后标志的位置
首先从后往前,如果找到第一个比5小的关键字(现在就是3),就放到5原来的位置,
然后从前往后,直到第一个比5大(现在就是6),放到3原来的位置
继续下去就会两个标志碰头了,循环终止
然后将基准5放到6原先的空位
这样第一趟排序的结果就是:C
比基准5小的都在其左边,比基准5大的都在其右边
接下来再对其左边与右边的分别这样排序直到序列只有一个元素为止
例如:
初始关键字:49,38,65,97,76,13,27,49*
第一趟排序后:27,38,13,49,76,97,65,49*