转载请注明: http://blog.csdn.net/li2011014203
好久没用到快速排序了,临近找实习,重新写了下快速排序,可以完全调通的。
网上看了些有些博客的讲解,虽说讲解很好,但是代码的完全正确性不保证,所以自己写了个,希望共同分享!
#include<iostream>
#include<cmath>
using namespace std;
void print1(int a[],int n)
{
for(int j=0 ;j<n;j++)
{
cout<<a[j]<<" ";
}
cout<<endl;
}
int partition(int a[],int low,int high)
{
int key =a[low];
while(low < high)
{
while(low < high && a[high] >= key )
{
high--;
}
if(low<high) a[low++]=a[high];
while(low < high && a[low] <= key)
{
low++;
}
if(low<high) a[high--] =a[low];
}
a[low] = key;
print1(a,8);
return low;
}
void quickSort(int a[],int low,int high)
{
if(low<high)
{
int parLoc = partition(a,low,high);
quickSort(a,low,parLoc-1);
quickSort(a,parLoc+1,high);
}
}
int main()
{
int a[8] = {3,1,5,7,2,4,9,6};
quickSort(a,0,7);
print1(a,8);
return 0;
}
运行结果如下: