读书人

依据算法导论写的快速排序

发布时间: 2012-08-24 10:00:21 作者: rapoo

根据算法导论写的快速排序

算法导论上面说在选取基准元素是取得最后一个,我用的数据结构课本上面是取第一个;

不过没有原理都是一样的;通过Qartion(int a[],int l,int r)函数将数组a中元素划分为三部分,比a[r]小的,比a[r]大的,a[r];

最后返回基准元素所在的位置;

#include <stdio.h>#include <iostream>#include <string.h>#include <algorithm>#include <math.h>using namespace std; const int N=99;  int Qartion(int a[],int l,int r) {  int tmp=a[r];   int i=l-1;   for(int j=l;j<=r-1;j++)   {    if(a[j]<=tmp){ i++; swap(a[i],a[j]);}   }   swap(a[i+1],a[r]);   return i+1; } void Qsort(int a[],int l,int r) {  if(l<r)  {    int p=Qartion(a,l,r);Qsort(a,l,p-1);Qsort(a,p+1,r);  } } int main() {      int n;  while(~scanf("%d",&n))  {     int a[100]; for(int i=0;i<n;i++) {  cin>>a[i]; } Qsort(a,0,n-1); for(int i=0;i<n;i++) {  cout<<a[i]<<" "; } cout<<endl;  } return 0; }


读书人网 >编程

热点推荐