C++代码,数据结构-内部排序-交换排序-快速排序
2014-03-14 20:43
330 查看
快速排序是对起泡排序的一种改进,通过一趟排序,可将序列分隔成独立的两部分,但一部分的关键字均比另一部分的关键字小,在分别对两部分记录进行排序,最后达到有序,
#include<iostream> using namespace std; //第十章 内部排序 //待排记录数据的数据结构 #define maxsize 100000 struct redtype{ int key; }; struct Sqlist { redtype r[maxsize]; int length; }; int buildsq(Sqlist &sq){ int x; cin>>x; sq.length=x+1; for(int i=1;i<=x;++i) { cin>>sq.r[i].key; } return x; } //快速排序是目前被认为是最好的一种内部排序方法,其中的pivotkey可以依照三折取中的法则来取,可大大改善快速排序在最换情况下的性能, int Partion(Sqlist &sq,int low,int high){ int pivotkey=sq.r[low].key; while(low<high){ while(low<high&&sq.r[high].key>=pivotkey)--high;//先从后往前搜索比pivotkey大的,交换之 sq.r[low].key=sq.r[high].key; while(low<high&&sq.r[low].key<=pivotkey)++low;//在从前往后搜索比pivotkey小的,交换之 sq.r[high].key=sq.r[low].key; } sq.r[low].key=pivotkey;//最后把pivotkey的值赋到正确位置, return low; } void Qsort(Sqlist &sq,int low,int high){ if(low<high){ int pivotkey=Partion(sq,low,high); Qsort(sq,low,pivotkey-1);//前半部分 Qsort(sq,pivotkey+1,high);//后半部分 } } int main(){ Sqlist sq; int t= buildsq(sq); Qsort(sq,1,t); for(int i=1;i<=t;++i){ cout<<sq.r[i].key<<"";
} return 0; }
相关文章推荐
- C++代码,数据结构-内部排序-交换排序-起泡排序
- C++代码,数据结构-内部排序-插入排序-2-路插入排序
- C++代码,数据结构-内部排序-插入排序-表插入排序
- C++代码,数据结构-内部排序-选择排序-归并排序
- C++代码,数据结构-内部排序-插入排序-直接插入排序
- C++代码,数据结构-内部排序-基数排序-链式基数排序
- C++代码,数据结构-内部排序-选择排序-堆排序
- 数据结构 - 2-路插入排序 具体解释 及 代码(C++)
- 数据结构 - 只需选择排序(simple selection sort) 详细说明 和 代码(C++)
- 交换排序——冒泡排序和快速排序,C++代码实现
- 快速排序的递归和非递归实现 -----C++、JAVA代码实现
- C++三种排序,快速排序、选择排序、冒泡排序----简单代码
- C++数据结构--快速排序
- 浅谈数据结构-交换排序(冒泡、快速)
- 数据结构 - 直接插入排序(Straight Insertion Sort) 详解 及 代码(C++)
- 数据结构与算法:C++实现快速排序
- 快速排序的c++代码实现
- 快速排序:源码(C++)--伪代码--时间复杂度解析
- 快速排序C++代码实现
- 六、内部排序综合(九种)—插入类排序(直接插入、折半插入、希尔排序);交换类排序(冒泡、快速);选择类排序(简单选择、堆排序);二路归并排序;基数排序