您的位置:首页 > 理论基础 > 数据结构算法

快速排序

2016-04-29 17:15 218 查看
1、算法思想

通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

2、执行流程

(a)一趟排序的过程



(b)排序的全过程



3、算法代码

void qickSort(int a[], int l, int r)//待排序数据存在a[]中
{
int i = l, j = r;
int temp;
if (l < r)
{
temp = a[l];
while (i != j)//完成一趟排序
{
while (j > i && temp < a[j])//从右往左扫描找到一个小于temp的元素
--j;
if (i < j)
{
a[i] = a[j];
++i;
}
while (i < j && a[i] < temp)//从左往右扫描找到一个大于temp的元素
++i;
if (i < j)
{
a[j] = a[i];
--j;
}
}
a[i] = temp;//将temp放到最终的位置
qickSort(a, l, i - 1);//递归地对temp左边的元素进行排序
qickSort(a, i + 1, r);//递归地对temp右边的元素进行排序
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息