快速排序
快速排序主要要理解他里面关于基准的概念。
pivot从左向右走,每次都把所指的位置的正确位置找到。
void QuickSort(int arr[],int low,int high)
{
if(low>=high)return;
//停止条件:说明已经排完了
int pivot=qsort(arr,low,high);
QuickSort(arr,low,pivot-1);
QuickSort(arr,pivor+1,high);
}
int qsort(int arr[],int low,int high)
{
int i=low,int j=high;
int key=arr[i];
while(i<j){
while(i<j&&(arr[j]>key))j--;
if(i<j){
arr[i]=arr[j];
i++;
}
while(i<j&&(arr[i]<key))i++;
if(i<j){
arr[j]=arr[i];
j--;
}
}
arr[i]=key;
return i;
}
本文深入探讨了快速排序算法,重点介绍了其核心概念——基准(pivot)的选择和如何找到基准的正确位置。通过递归地将数组分为小于和大于基准的两部分,快速排序能有效地对数据进行排序。提供的代码示例展示了快速排序的完整实现,包括主函数QuickSort和辅助函数qsort。相比堆排序,快速排序在理解和实现上更为简洁。
7072

被折叠的 条评论
为什么被折叠?



