算法设计与分析基础-4.2、快速排序

java的也要实现,partition理解了很久,做这种题,不理解的时候画出图来!

方法一、

#include "stdafx.h"
int a[100];

void quickSort(int a[],int l,int h)
{
if(l>=h)return;
int i,j,key;
i=l;
j=h;
key=a[i];
while(ikey)j--;
if(ii+1)
quickSort(a,i+1,h);
}


int _tmain(int argc, _TCHAR* argv[])
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",a+i);
for(int i=1;i<=n;i++)
printf("%d ",a[i]);
printf("\n");
quickSort(a,1,n);
for(int i=1;i<=n;i++)
printf("%d ",a[i]);
return 0;
}


方法二、

#include 
#include 
using namespace std;
int partition(int *array,int p,int r)
{
     int pivot =array[r];   //pivot的选择可以多种
int index=p;
for(int i=p;i=r)
    return;
int index=partition(array,p,r);
qsort(array,p,index-1);
qsort(array,index+1,r);
}


int main()
{
    int a[7];
int i;
for(i=0;i<7;i++)
{
  scanf("%d",a+i);
}
for(i=0;i<7;i++)
{
printf("%d  ",a[i]);
}
cout<


你可能感兴趣的:(算法设计与分析基础)