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

 我来答
帐号已注销
2021-01-30 · TA获得超过77.1万个赞
知道小有建树答主
回答量:4168
采纳率:93%
帮助的人:165万
展开全部

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

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

扩展资料:

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

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

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

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

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

下周四到
2016-01-06 · TA获得超过271个赞
知道小有建树答主
回答量:340
采纳率:0%
帮助的人:172万
展开全部
第二趟排序是,以25为分割,将15、10、20、18、5、3、16和44、64、100、81、38、40、31分成两组分别进行快速排序即得到第二趟的正确排序。而不是将整个一组数据进行排序算法,不然就得到你的排序结果了。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
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;
}
追问
不要代码,只要画图
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式