#define Quick_Sort
#ifdef Quick_Sort
int partition(int pArr[],int low,int high)
{
int pivot = pArr[low];
while(low < high)
{
while(low<high&&pArr[high]>=pivot) high--;
pArr[low] = pArr[high];
while(low<high&&pArr[low]<=pivot) low++;
pArr[high] = pArr[low];
}
pArr[low] = pivot;
return low;
}
void Quick_sort(int pArr[],int low,int high)
{
int keyPos = 0;
if(low<high)
{
keyPos = partition(pArr,low,high);
Quick_sort(pArr,low,keyPos-1);
Quick_sort(pArr,keyPos+1,high);
}
}
int main(int argc,char**argv)
{
int arr[] = {49,38,65,97,76,13,27,49};
/*注意size-1*/
Quick_sort(arr,0,sizeof(arr)/sizeof(arr[0])-1);
for(int i = 0;i<sizeof(arr)/sizeof(arr[0]);i++)
{
printf("%2d ",arr[i]);
}
getchar();
return 0;
}
#endif
慢慢来吧,仅把代码实现,跑通并理解,后面复习的时候再补充一些复杂度和算法导论上的分析。后续会把之前面试宝典上贴出来的代码重新整理一遍,并添加必要的理解和体会。