思路:通过确定分界点+左右伪指针调整区间+分治思想来进行排序。
函数代码:
void quick_sort(int q[], int l , int r){
if(l>=r) return;
int i=l-1,j=r+1,x=q[(l+r)>>1];
while(i<j){ //i,j指向数组元素位置;
do i++; while(q[i]<x); //左伪指针指向不小于x的数
do j++; while(q[j]>x); //右伪指针指向不大于x的数
if(i<j){ //交换左右指针的值
int temp=q[i];
int q[i]=q[j];
int q[j]=temp;
}
}
quick_sort(q,l,j),quick_sort(q,j+1,r); //分治递归排序剩下的部分
}
tips:忘记指针调整的时候,可以直接开辟两个数组A,B;通过一次扫描判断,把小于分界点x的数放到A,大于x的数放到B,最后再把A,B合并起来。
本文深入探讨了快速排序算法的原理,采用分治思想,通过确定分界点并使用左右伪指针进行区间调整。代码中展示了如何进行排序,并提到了在忘记指针调整时可使用额外数组辅助排序。该算法高效且广泛应用于数据处理领域。
571

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



