摘要:本文描述了快速排序的算法原理,给出了算法的逐步排序过程以及算法的实现。最后对算法的性能进行了分析。
1. 问题描述
输入:n个数的序列<a1,a2,a3,...,an>。输出:原序列的一个重排<a1*,a2*,a3*,...,an*>;,使得a1*<=a2*<=a3*<=...<=an*。
2.问题分析
快速排序:最基本的思想就是通过一趟排序,将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录进行排序,以达到整个序列有序。
排序过程:(对 data[s, t] 排序)
(1)初始时令i=s,j=t
(2)首先从j所指位置向前搜索第一个关键字小于x的记录,并和rp交换
(3)再从i所指位置起向后搜索,找到第一个关键字大于x的记录,和rp交换
(4)重复上述两步,直至i==j为止
(5)再分别对两个子序列进行快速排序,直到每个子序列只含有一个记录为止