快速排序算法详细图解,各种排序算法图解

http://www.itjxue.com  2023-01-22 22:53  来源:未知  点击次数: 

数据结构 第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)然后,左边和右边的数据可以独立排序。对于左侧的数组数据,又可以取一个分界值,将该部分数据分成左右两部分,同样在左边放置较小值,右边放置较大值。右侧的数组数据也可以做类似处理。

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

快速排序算法(free pascal)详解,不要源程序,时间复杂度n(logn);谢了//

快速排序是对冒泡排序的一种改进。它的基本思想是:通过一躺排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一不部分的所有数据都要小,然后再按次方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

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

1)、设置两个变量I、J,排序开始的时候I:=1,J:=N;

2)以第一个数组元素作为关键数据,赋值给X,即X:=A[1];

3)、从J开始向前搜索,即由后开始向前搜索(J:=J-1),找到第一个小于X的值,两者交换;

4)、从I开始向后搜索,即由前开始向后搜索(I:=I+1),找到第一个大于X的值,两者交换;

5)、重复第3、4步,直到Ij;

详细过程举例如下:

原序: [26 5 37 1 61 11 59 15 48 19]

一: [19 5 15 1 11] 26 [59 61 48 37]

二: [11 5 15 1] 19 26 [59 61 48 37]

三: [1 5] 11 [15] 19 26 [59 61 48 37]

四: 1 5 11 [15] 19 26 [59 61 48 37]

五: 1 5 11 15 19 26 [59 61 48 37]

六: 1 5 11 15 19 26 [37 48] 59 [61]

七: 1 5 11 15 19 26 37 48 59 [61]

八: 1 5 11 15 19 26 37 48 59 61

快速排序法是所有排序方法中速度最快、效率最高的方法。程序如下:

var a:array[0..10] of integer;

n:integer;

procedure qsort(l,r:longint);{r,l表示集合的左右边界,即把第r到第l个数进行排序}

var i,j,m:longint;

begin

m:=a[l];{标准数}

i:=l; {I,J为指针}

j:=r;

repeat

while a[i]m do inc(i);

while a[j]m do dec(j);

if i=j then begin

a[0]:=a[i];

a[i]:=a[j];

a[j]:=a[0];

inc(i);

dec(j);

end;

until ij;

if lj then qsort(l,j); {如果集合中不止一个数则进入下一层递归,l,J为新边界}

if irthen qsort(i,r); {如果集合中不止一个数则进入下一层递归,i,r为新边界}

end;

begin

for n:=1 to 10 do read(a[n]);

qsort(1,10);

for n:=1 to 10 do write(a[n]:4);

end.

快速排序第一趟结果是什么

快速排序第一趟的结果是:将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小。

快速排序整个排序过程可以递归进行,以此达到整个数据变成有序序列。

扩展资料

快速排序流程:

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

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

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

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

(责任编辑:IT教学网)

更多

推荐人物新闻文章