int partion(int curArr[],int lIndex,int rIndex)
{
int partIndex = rIndex;
int moreIndex = rIndex - 1;
int lessIndex = lIndex;
while (moreIndex != lessIndex) {
if (curArr[lessIndex] > curArr[partIndex]) {
swap(curArr[lessIndex], curArr[moreIndex]);
moreIndex--;
}
else {
lessIndex++;
}
}
int splitIndex = lessIndex;
//如果当前的数小于标准,则用下个数去交换
if (curArr[lessIndex] < curArr[partIndex]) {
splitIndex++;
}
swap(curArr[partIndex], curArr[splitIndex]);
return splitIndex;
}
void quickSort(int curArr[], int lIndex, int rIndex)
{
if (lIndex >= rIndex ) return;
int splitIndex = partion(curArr, lIndex, rIndex);
for (int i = lIndex; i <= rIndex; i++)
{
cout << "->" << curArr[i];
}
cout <<"spliIndex::"<<splitIndex<<":value:::"<<curArr[splitIndex]<< endl;
quickSort(curArr, lIndex, splitIndex-1);
quickSort(curArr, splitIndex + 1, rIndex);
}
快排:nlogn,1,不稳定