今天花点时间看了一下快速排序的原理,写了一下程序,现把程序粘贴如下:
#include<iostream>
using namespace std;
int main()
{
int a[8]={49,38,65,97,76,13,27,49};
int low=0;
int high=7;
for(int i=0;i<high+1;i++)
cout<<a[i]<<" ";
cout<<endl;
void qs(int v[],int ,int );
qs(a,low,high);
for(int i=0;i<high+1;i++)
cout<<a[i]<<" ";
cout<<endl;
getchar();
return 0;
}
void qs(int v[],int left,int right)
{
int pivot=v[left];
int i=left;
int j=right;
while(i<j)
{
while(i<j && v[j]>=pivot) j--;
v[i]=v[j];
while(i<j && v[i]<=pivot) i++;
v[j]=v[i];
}
v[i]=pivot;
if(left<i-1)
qs(v,left,i-1);
if(i+1<right)
qs(v,i+1,right);
}
法二:
#include<iostream>
using namespace std;
int main()
{
int a[8]={49,38,65,97,76,13,27,49};
int low=0;
int high=7;
for(int i=0;i<high+1;i++)
cout<<a[i]<<" ";
cout<<endl;
int partion(int v[],int ,int );
void qs(int v[],int ,int );
qs(a,low,high);
for(int i=0;i<high+1;i++)
cout<<a[i]<<" ";
cout<<endl;
getchar();
return 0;
}
int partion(int v[],int left,int right)
{
int pivot=v[left];
int i=left;
int j=right;
while(i<j)
{
while(i<j && v[j]>=pivot) j--;
v[i]=v[j];
while(i<j && v[i]<=pivot) i++;
v[j]=v[i];
}
v[i]=pivot;
return (i);
}
void qs(int v[],int left,int right)
{
int i=partion(v,left,right);
if(left<i-1)
qs(v,left,i-1);
if(i+1<right)
qs(v,i+1,right);
}