快速排序
快速排序使用的是分治思想,采用递归实现。
#include <iostream>
using namespace std;
void Partition(int* data,int begin,int end)
{
if(end-begin<=0)
return;
int l = begin;
int r = end;
int small = l-1;
while(l<r)
{
if(data[l]<data[end])
{
small++;
if(small!=l)
{
swap(data[small],data[l]);
}
}
l++;
}
small++;
swap(data[small],data[end]);
Partition(data,begin,small-1);
Partition(data,small+1,end);
}
void qiuckSort(int* data,int length)
{
if(NULL==data||length<=0)
return;
Partition(data,0,length-1);
}
int main()
{
int data[] = {3,1,4,1,5,9,2,6,5,3,5,4,9,7,8,2,5,10};
for(int i=0;i<18;i++)
cout << data[i]<<" ";
cout<<endl;
qiuckSort(data,18);
for(int i=0;i<18;i++)
cout << data[i]<<" ";
return 0;
}