跳过正文

Post_7

·44 字·1 分钟 草稿
Qsbird
作者
Qsbird
A little bit about you

快速排序 代码思路:双指针L,R分别指向数组两端,从右往左移动R,直到R所指元素比L小,把L所指替换为R当前所指,然后反向移动L,直到L所指大于R所指。LR重合时,两者指向的位置即为开始前L所指元素的位置,把L/R所指元素替换为该值

算法思路:两个指针轮流从两端寻找大小不属于两者之间的元素,并将其替换到对方指针所在的位置。两个指针相遇时,指针所指位置就是最先开始移动的指针所指的值应在的位置。结束本轮排序后,向两侧形成的数组进行递归排序

代码实现如下:

void quicksort(vector &a ,int l,int r){ if(l>=r-1){ return; } int first = l,last=r-1,key=a[l]; while(first < last){ while(a[last]>=a[first]&&first < last){ last–; } a[first] = a[last]; while(a[last]<=a[first]&&first < last){ first++; } a[last] = a[first]; } a[first]=key; quicksort(a,l,first-1); quicksort(a,first+1,l); } 参考资料:

https://blog.csdn.net/qq_39181839/article/details/109478094

2024年3月27日