快速排序--过程详解

来源:互联网 发布:植物大战僵尸源码 编辑:程序博客网 时间:2024/05/17 06:29

快速排序

1. 时间复杂度 O(N*LogN)

2.个人认为快速排序是不断的分治、递归的进行它排序操作过程,直到排序完成

3. 进行一次排序操作后,把指定的一个数,放到该序列应该在的位置,这个数的左边都比这个数小,这个数的右边都比这个数大。


以3 ,7 ,8 ,4 ,2 ,1 ,9 ,5 为例进行排序演示


当进行一次排序操作后字符串变化如下:

要进行演示的开始状态到一次排序后的结束状态


1.准备:需要有一个变量存储指定的数,这里用 temp ,用front和end变量记录序列位置;初始是指向首尾;

快速排序的准备初始化相应变量

2. end指向位置向左移动的找比 temp 小的数,如果小,将end指向的数赋给front向的数

进行排序1

进行快速排序2

3. front指向位置向右移动的找比 temp 大的数,如果小,将front指向的数赋给end向的数

这里写图片描述

4. end左移,发现 2 小于 temp的值,将 2 赋值给front所指的位置。 然后front 右移

这里写图片描述

5.Front指向的数大于temp的值 3 ,将8赋给end所指的数。然后end向左移动

这里写图片描述

6.end左移,发现 2 小于 temp的值,将 2 赋值给front所指的位置。 然后front 右移

这里写图片描述

7.Front指向的数大于temp的值 3 ,将8赋给end所指的数。然后end向左移动

这里写图片描述

8.当 front和end指向的数重合,将temp的值 赋给,它们指向的数

这里写图片描述

这里写图片描述

9. 至此,一趟排序操作完成,接下来以 3 为基准进行二分,左边和右边继续进行此操作 ,直到排序完成

这里写图片描述

如发现错误请指正!
转载请注明出处!

1 0
原创粉丝点击