数据结构 第6题快速排序前两趟 第一趟写对了,但第二趟我写的与答案不一样 求解释

如题所述

第二趟排序以25为分割,将15、10、20、18、5、3、16和44、64、100、81、38、40、31分成两组分别进行快速排序即得到第二趟的正确排序。不是将整个一组数据进行排序算法,不然就得到排序结果了。

快速排序:设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用第一个数据)作bai为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。

扩展资料:

快速排序算法通过多次比较和交换来实现排序,其排序流程如下:

(1)首先设定一个分界值,通过该分界值将数组分成左右两部分。

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

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

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

温馨提示:内容为网友见解,仅供参考
第1个回答  2016-01-06
第二趟排序是,以25为分割,将15、10、20、18、5、3、16和44、64、100、81、38、40、31分成两组分别进行快速排序即得到第二趟的正确排序。而不是将整个一组数据进行排序算法,不然就得到你的排序结果了。本回答被提问者和网友采纳
第2个回答  2016-01-06
//使用val对a数组从fromIndex(包含)至toIndex(不包含)位置进行数据填充
public static void fill(long[] a, int fromIndex, int toIndex, long val) {
rangeCheck(a.length, fromIndex, toIndex);
for (int i=fromIndex; i<toIndex; i++)
a[i] = val;
}追问

不要代码,只要画图

相似回答