快速排序算法
来源:互联网 发布:mac 输入法进程 编辑:程序博客网 时间:2024/05/21 10:22
之前一篇文章写了写堆排序算法的实现过程,今天进行快速排序算法的代码练习
说道快速排序,他的主要思想是将一个数列进行合理的划分,划分的标准来自枢轴的选择,其中使用枢轴来划分子序列,进而产生递推的表达,而得到子序列,通过交换数据而得到整体顺序一致的序列。
因此,枢轴的选取成为提高快速排序算法效率的根本要求。
废话不说了,基本的快排的思想在数据结构这本书中已经接触过了,具体的实现如下:
#include <iostream>using namespace std;template<class Any>void SwapData(Any &a,Any &b){ Any tmp=a; a=b; b=tmp;}template<class AnyType>void OutPut(AnyType array,int len){ cout << array[0]; for(int i=1;i<len;i++) cout << " " << array[i]; cout << endl;}/*快速排序的核心思路就是如何选择枢轴的位置,也就是如何对整个数列进行合理的划分。改进快速排序的算法,其实本质就是改进对序列的划分的方法。*/template<class AnyType>void QuickSort(AnyType array[],int left,int right,int len){ if(left<right) { AnyType tmp=array[left]; int i=left; int j=right+1; while(true) { while(i+1<len && array[++i]<tmp); while(j-1>-1 && array[--j]>tmp); if(i>=j) break; SwapData(array[i],array[j]); } array[left]=array[j]; array[j]=tmp; QuickSort(array,left,j-1,len); QuickSort(array,j+1,right,len); }}template<class AnyType>int MyPartition(AnyType array[],int left,int right){ AnyType tmp=array[right]; int i=left-1; for(int j=left;j<right;j++) { if(array[j]<=tmp) SwapData(array[++i],array[j]); } SwapData(array[i+1],array[right]); return i+1;}template<class AnyType>void QuickSortMoreFast(AnyType array[],int left,int right){ if(left<right) { int q=MyPartition(array,left,right); QuickSortMoreFast(array,left,q-1); QuickSortMoreFast(array,q+1,right); }}//调用C++内部函数进行排序#include <algorithm>#include <vector>void InnerQSort(){ vector<int> data; for(int i=0;i<50;i++) data.push_back(rand()); sort(data.begin(),data.end()); OutPut(data,data.size());}int main(){// int array[]={5,4,7,3,9,1,8,6,10,2};// QuickSort(array,0,sizeof(array)/sizeof(int),sizeof(array)/sizeof(int));// QuickSortMoreFast(array,0,sizeof(array)/sizeof(int));// OutPut(array,sizeof(array)/sizeof(int)); InnerQSort(); return 0;}
1 0
- 排序算法--快速排序
- 排序算法--快速排序
- 排序算法---快速排序
- 排序算法-快速排序
- 排序算法------快速排序
- 排序算法---快速排序
- 排序算法-快速排序
- 排序算法---快速排序
- 排序算法--快速排序
- 排序算法--快速排序
- 排序算法--快速排序
- 排序算法:快速排序
- 排序算法 快速排序
- 排序算法--快速排序
- 排序算法--快速排序
- 【排序算法】快速排序
- 排序算法--快速排序
- 排序算法:快速排序
- 浅谈操作系统
- JAVA学习笔记(八)- 字符串类和方法
- 西安荣峰多媒体互动电子沙盘
- 插入排序和归并排序实现
- Android Logcat过滤显示本应用日志信息
- 快速排序算法
- 一个tomcat部署多个struts2项目
- nginx的请求处理
- (hdu 简单题 128道)hdu 2001 计算两点间的距离
- 数据结构之迷宫问题
- poj_1159
- Ubuntu下,查看以及修改PATH的方法
- 天津回收二手数码相机
- 商业智能BI的三个层次-----数据报表、数据分析、数据挖掘