数据结构基础(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.代码实现:
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); //对高子表进行递归排序 } }
相关文章推荐
- 数据结构基础(15) --基数排序
- 数据结构基础(15) --基数排序
- 管理诊断数据(1)---故障诊断性基础结构
- 数据结构基础:二叉树,堆,多叉树
- 数据结构基础 - 链表的遍历 zz
- 大数据DTSpark"蘑菇云"行动之 第四课:零基础彻底实战Scala控制结构
- 数据结构基础 一元多项式的乘法与加法运算
- 数据结构基础——内存中数据存储的基本方式(单链表)
- 数据结构基础(C++版)(张力译版)校正 之三 .
- C#数据结构学习之一:数据结构基础知识
- java(34):数据结构(4)--Queue(1)概念基础
- STL map, STL set之数据结构基础
- 数据结构基础温故-7.排序
- 数据结构基础5.3:平衡二叉树(AVL树)的调整
- 数据结构基础温故-6.查找(下):哈希表
- Linux基础数据结构——双向链表
- Java之美[从菜鸟到高手演变]之数据结构基础、线性表、栈和队列、数组和字符串
- elixir 基础数据结构
- 数据结构基础之栈
- 数据结构基础(10) --单链表迭代器的设计与实现