快速排序
快速排序的基本思想就是通过一趟操作将一个无序的序列分割成相邻的两个区域,其中一个区域中数据的关键字都比另一个区域中的小,(即找到一个枢轴,以其为居中标杆,右边的都比它小,左边的都比它大)。然后对两个区域分别进行这样的操作,直到整个序列呈现有序状态。
对与本算法而言,要调用三个函数。第一个函数,int Partition(RcdType R[], int low, int high), 作用是将low...high序列进行一次划分并返回枢轴的位置。具体操作为定义pivotkey,将序列最左边数据关键字赋给它,然后将low的关键字放入R[0] 哨兵单元待定。对于high,如果其关键字比枢轴小,则将其赋给low,对于low,如果其关键字比枢轴大,则将其赋给high,同时注意对其进行自加自减操作,最后当low=high时结束,将R[0]的值赋给low,并返回low。第二个函数,void QSort(RcdType R[], int s, int t),作用是对序列 s...t 进行快速排序。函数体中首先是调用第一个函数对s..t 进行一次划分,然后得到枢轴位置后对左右两边区域递归进行划分,最终实现排序。第三个函数,通过调用第二个函数对顺序表L进行排序。<