分治算法之基于分治的快速排序
基于分治的快速排序下面我们针对数组 [4, 1, 6, 9, 8, 5, 2, 3, 0, 7] 进行排序来讲解示例首先第一步我们需要将大问题分解为小问题。假设我们要将数组分为两个更小的子问题我们可以有以下的分解方式[4] [1, 6, 9, 8, 5, 2, 3, 0, 7] [4, 1] [6, 9, 8, 5, 2, 3, 0, 7] [4, 1, 6] [9, 8, 5, 2, 3, 0, 7] ... [4, 1, 6, 9, 8, 5, 2, 3, 0] [7]可见直接分解方式很多并且没有规律分解的两个数组没有实际的关系和联系。因此我们可以找一个数作为分界点将其余数据分成两类。具体的我们选取下标为 0 的数值 4 作为分界点并将小于 4 的数据置于数据整体的左侧大于 4 的数据置于数据整体的右侧。通过不断地比较大小和数据交换可以获得下面的子问题。[4, 1, 6, 9, 8, 5, 2, 3, 0, 7] | 4为选定的分割点 v [0, 1, 3, 2] 4 [5, 8, 9, 6, 7]此时在 4 的左右出现了子问题而这两个子问题的处理方式又是一样的。最终所有的处理方式我们可以生成下面的一张树状图。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2556097.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!