快速排序算法C++实现

来源:互联网 发布:兼职 知乎 编辑:程序博客网 时间:2024/06/15 17:13

        今天花点时间看了一下快速排序的原理,写了一下程序,现把程序粘贴如下:

   #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);
}