快速排序(算法导论中的版本)
2012-03-27 22:46
357 查看
#include <iostream> #include <algorithm> #include <string> #include <map> #include <queue> #include <set> #include <fstream> #include <utility> #include <iomanip> #include <stack> #include <list> #include <vector> #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <ctime> #include <ctype.h> #include <limits.h> using namespace std; //算法导论中描述的快速排序,随机化版本 int partition(int *a,int p,int r){ int x,i=p-1,j,t; j=rand()%(r-p)+p; t=a[r]; a[r]=a[j]; a[j]=t; x=a[r]; for(j=p;j<r;j++){ if(a[j]<=x){ i+=1; t=a[i]; a[i]=a[j]; a[j]=t; } } t=a[i+1]; a[i+1]=a[r]; a[r]=t; return i+1; } void quicksort(int *a,int p,int r){ if(p<r){ int q=partition(a,p,r); quicksort(a,p,q-1); quicksort(a,q+1,r); } } int main() { int a[]={1,3,2,5,9,4,3}; quicksort(a,0,6); for(int i=0;i<7;i++){ printf("%d ",a[i]); } return 0; }
算法导论学习,实现快速排序,时间复杂度(nlogn)
相关文章推荐
- 算法导论:快速排序及其随机化版本
- 【算法导论】快速排序
- 学习算法导论——快速排序
- 算法导论第十二章习题12.3-1---二叉树插入的递归版本
- 算法基础4:快速排序(随机化版本)
- 【算法导论】C++源码之快速排序
- 快速排序及其随机化(算法导论)
- 七大排序问题之快速排序(参考算法导论PHP版)
- 算法设计之快速排序的随机化版本 (C++实现)
- 【算法导论】快速排序
- KMP算法(未优化版本,算法导论原版)
- [算法导论][排序算法]快速排序(quick sort)
- 快速排序的算法导论划分形式和hoare划分
- 【算法导论-010】快速排序(quickSort)
- 一头扎进算法导论-快速排序(挖坑填数策略)
- 算法导论:c++快速排序
- 【算法导论】排序---快速排序
- 算法导论中的快速排序详解
- C++ 快速排序实现(算法导论)
- [算法导论]第七章《快速排序》