一组记录的关键字为{46,79,56,38,40,84},如利用快速排序方法,以第一个记录为枢轴得到的

如题所述

以第一个记录为枢轴得到的是{40,38,46,79,56,84}

解题思路:

1、以46为分界值,通过该分界值将数组分成左右两部分。

2、从后向前,将大于或等于分界值的数据集中到数组右边,小于分界值的数据集中到数组的左边。此时,左边部分中各元素都小于或等于分界值,而右边部分中各元素都大于或等于分界值。

3、然后,左边和右边的数据可以独立排序。对于左侧的数组数据,又可以取一个分界值,将该部分数据分成左右两部分,同样在左边放置较小值,右边放置较大值。右侧的数组数据也可以做类似处理。

4、重复上述过程,可以看出,这是一个递归定义。通过递归将左侧部分排好序后,再递归排好右侧部分的顺序。当左、右两个部分各数据排序完成后,整个数组的排序也就完成了。

扩展资料:

一趟快速排序的算法是:

1、设置两个变量i、j,排序开始的时候:i=0,j=N-1;

2、以第一个数组元素作为关键数据,赋值给key,即key=A[0];

3、从j开始向前搜索,即由后开始向前搜索(j--),找到第一个小于key的值A[j],将A[j]和A[i]的值交换;

4、从i开始向后搜索,即由前开始向后搜索(i++),找到第一个大于key的A[i],将A[i]和A[j]的值交换;

5、重复第3、4步,直到i=j; 3,4步中,没找到符合条件的值,即3中A[j]不小于key,4中A[i]不大于key的时候改变j、i的值,使得j=j-1,i=i+1,直至找到为止。找到符合条件的值,进行交换的时候i, j指针位置不变。另外,i==j这一过程一定正好是i+或j-完成的时候,此时令循环结束。 

参考资料来源:百度百科-快速排序算法

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-01-08
40,38,46,56,79,84
快速排序法定义了,以46为基准数,把比它大的放在右边,小的放在左边。所以第一次得到的结果是40,38,46,56,79,84本回答被网友采纳
第2个回答  2013-07-01
通常做法,都是以第一个数为支点
比如是第一次以46为支点
得到38,40,46,56,79,84
然后依次类推
这是快速排序
第3个回答  2015-07-01
15 30 42 98 86 15 57
第4个回答  2011-06-18
什么语言的?
相似回答