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

数据结构基础(15)------------QuickSort

2014-04-10 09:29 316 查看
数据结构基础(15)------------QuickSort
1.QuickSort的基本思想是:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序的目的。
2.快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。
3.在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n)
算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。
4.代码实现:
int Partition(int *a,int begin,int end)
{
int key=a[begin];
while (begin<end) //表的两端交替向中间扫描
{
while (begin<end && a[end]>=key)
--end;

//将比枢轴小的记录交换到低端
int temp=a[begin];
a[begin]=a[end];
a[end]=temp;
while (begin<end && a[begin]<=key)
++begin;

//将比枢轴大的记录交换到高端
temp=a[begin];
a[begin]=a[end];
a[end]=temp;
}
return begin; //返回枢轴所在的位置
}

void QuickSort(int *a,int begin,int end)
{
if (begin<end)
{
int pivot=Partition(a,begin,end);//将a中的begin--end范围的数组一分为二
QuickSort(a,begin,pivot);  //对低子表进行递归排序
QuickSort(a,pivot+1,end);  //对高子表进行递归排序
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: