思路:快速排序是对冒泡排序的一种优化,通过确定一个标志位来从左右两边对无序数列进行划分,然后递归实现,直到无法再划分,即是排序结果。时间复杂度O(nlog2n),不稳定。
int partition(int * data,int i,int j)
{
int temp = data[i];
while(i < j)
{
while(data[j] >= temp&&i < j) j--;
if(i < j) data[i] = data[j];
while(data[i] <= temp&&i < j) i++;
if(i < j) data[j] = data[i];
}
data[i] = temp;
return i;
}
void sort(int * data,int i,int j)
{
int k;
if(i < j)
{
k = partition(data,i,j);
sort(data,i,k-1);
sort(data,k+1,j);
}
}