快速排序(Quick Sort)
快速排序算法是对冒泡排序的一种改进,冒泡排序一趟比较后只能使排序序列的长度减少1,而快速排序希望经过一趟扫描后使得排序序列的长度大幅度减少。它的基本思想是通过一趟排序将序列划分为两部分,其中一部分所有的数据比另一部分所有的数据都要小。然后对这两部分分别进行快速排序,整个排序是一个递归调用的过程,最终实现整个序列有序。
排序流程:
a) 设置两个变量,first、last,排序开始的时候first = 0,last = N-1;
b) 以第一个数组元素作为关键数据,赋值给key,即key = A[0];
c)从j开始向前搜索,如果A[j]<key,则A[j]与A[i]互换;否则,j--;
d)从i开始向后搜素,如果A[i]>key,则A[i]与A[j]互换;否则,i++;
e)重复c),d),直至i==j。
示例代码:
1、qsort函数的用法
qsort函数是编译器函数库自带的函数,原型如下:
void qso