早教吧作业答案频道 -->数学-->
有如下一组数:65427318要求用快速排序,而且,1.要把7做为中央值,分割成两个组2.再将由1分得的元素数较多的组再分割成两个组.3.再将由2分得的元素数较多的组再分割成两个组.请问该怎么
题目详情
有如下一组数:
6 5 4 2 7 3 1 8
要求用快速排序,而且,
1.要把7做为中央值,分割成两个组
2.再将由1分得的元素数较多的组再分割成两个组.
3.再将由2分得的元素数较多的组再分割成两个组.
请问该怎么分,不要求程序,只要给出每次分组的情况说明就可以.
6 5 4 2 7 3 1 8
要求用快速排序,而且,
1.要把7做为中央值,分割成两个组
2.再将由1分得的元素数较多的组再分割成两个组.
3.再将由2分得的元素数较多的组再分割成两个组.
请问该怎么分,不要求程序,只要给出每次分组的情况说明就可以.
▼优质解答
答案和解析
基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列.
设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用第一个数据)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序.一趟快速排序的算法是:
1)设置两个变量I、J,排序开始的时候:I=0,J=N-1;
2)以第一个数组元素作为关键数据,赋值给key,即 key=A[0];
3)从J开始向前搜索,即由后开始向前搜索(J=J-1),找到第一个小于key的值A[J],并与A[I]交换;
4)从I开始向后搜索,即由前开始向后搜索(I=I+1),找到第一个大于key的A[I],与A[J]交换;
5)重复第3、4、5步,直到 I=J; (3,4步是在程序中没找到时候j=j-1,i=i+1,直至找到为止.找到并交换的时候i, j指针位置不变.另外当i=j这过程一定正好是i+或j+完成的最后另循环结束) 6 5 4 2 7 3 1 8
以7为key进行排序:
第一次交换:6 5 4 2 3 7 1 8
第二次交换:6 5 4 2 3 1 7 8
至此完成第一趟排序得到{6 5 4 2 3 1} 7 {8}两个部分再按以上思想进行排序;
对于前一部分假设以4为key进行排序后半部分只有一个数就不要排了:
第一次交换:4 5 6 2 3 1
第二次交换:2 5 6 4 3 1
第三次交换:2 5 6 3 4 1
第四次交换:2 5 6 3 1 4
第五次交换:2 4 6 3 1 5
第六次交换:2 3 6 4 1 5
第七次交换:2 3 4 6 1 5
第八次交换:2 3 1 6 4 5
第九次交换:2 3 1 4 6 5
至此完成第二趟排序得到{2 3 1} 4 {6 5}两个部分再按以上思想进行排序;
前半部分得到{1 2 3},后半部分得到{5 6};
至此排序结束.
希望对LZ有帮助.
设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用第一个数据)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序.一趟快速排序的算法是:
1)设置两个变量I、J,排序开始的时候:I=0,J=N-1;
2)以第一个数组元素作为关键数据,赋值给key,即 key=A[0];
3)从J开始向前搜索,即由后开始向前搜索(J=J-1),找到第一个小于key的值A[J],并与A[I]交换;
4)从I开始向后搜索,即由前开始向后搜索(I=I+1),找到第一个大于key的A[I],与A[J]交换;
5)重复第3、4、5步,直到 I=J; (3,4步是在程序中没找到时候j=j-1,i=i+1,直至找到为止.找到并交换的时候i, j指针位置不变.另外当i=j这过程一定正好是i+或j+完成的最后另循环结束) 6 5 4 2 7 3 1 8
以7为key进行排序:
第一次交换:6 5 4 2 3 7 1 8
第二次交换:6 5 4 2 3 1 7 8
至此完成第一趟排序得到{6 5 4 2 3 1} 7 {8}两个部分再按以上思想进行排序;
对于前一部分假设以4为key进行排序后半部分只有一个数就不要排了:
第一次交换:4 5 6 2 3 1
第二次交换:2 5 6 4 3 1
第三次交换:2 5 6 3 4 1
第四次交换:2 5 6 3 1 4
第五次交换:2 4 6 3 1 5
第六次交换:2 3 6 4 1 5
第七次交换:2 3 4 6 1 5
第八次交换:2 3 1 6 4 5
第九次交换:2 3 1 4 6 5
至此完成第二趟排序得到{2 3 1} 4 {6 5}两个部分再按以上思想进行排序;
前半部分得到{1 2 3},后半部分得到{5 6};
至此排序结束.
希望对LZ有帮助.
看了 有如下一组数:6542731...的网友还看了以下:
如图,平行六面体ABCD-A1B1C1D1中,以顶点A为端点的三条棱长都为1,且两夹角为60°.(1 2020-03-31 …
两年前儿子的年龄是母亲的1/6,今年儿子的年龄是父亲的1/5,且两年前儿子的年龄是当年父亲年龄减去 2020-04-26 …
已知平行六面体中,以顶点A为端点的三条棱长都等于1,且两两夹角都为60°,则对角线AC1的长是() 2020-05-13 …
已知平行六面体ABCD-A1B1C1D1中,以顶点A为端点的三条棱长都等于1,且两两夹角都为60° 2020-05-13 …
如图所示,四棱柱ABCD-A1B1C1D1中,底面为平行四边形,以顶点A为端点的三条棱长都为1,且 2020-05-13 …
当两个圆有两个公共点,且其中一个圆的圆心在另一圆的圆内时,我们称此两圆的位置关系为“内相交”.如果 2020-06-06 …
当两个圆有两个公共点,且其中一个圆的圆心在另一圆的圆内时,我们称此两圆的位置关系为“内相交”.如果 2020-06-06 …
三个向量a.b.c,它们的模都等于1,并且两两夹角都是120度,求向量a+b+c 2020-07-07 …
概率论问题!求详解!设X~N(0,1),Y~B(16,1/2),且两随机变量相互独立,则D(2X+ 2020-07-18 …
已知平行六面体中,以顶点A为端点的三条棱长都等于1,且两两夹角都为60°,则对角线的长是. 2020-08-03 …