Cockroach_hzs
2023-07-18 09:49:21
快速排序的原理:
快速排序 (Quicksort),计算机科学词汇,适用领域Pascal,c++等语言, 是对冒泡排序算法的一种改进 。
排序流程
快速排序的原理:
(1)首先设定一个分界值(mid),通过该分界值将数组分成左右两部分。
(2)将大于或等于分界值的数据集中到数组右边,小于分界值的数据集中到数组的左边。此时,左边部分中各元素都小于分界值,而右边部分中各元素都大于或等于分界值。
(3)然后,左边和右边的数据可以独立排序( 递归 )。对于左侧的数组数据,又可以取一个分界值,将该部分数据分成左右两部分,同样在左边放置较小值,右边放置较大值。右侧的数组数据也可以做类似处理。
(4)重复上述过程,可以看出,这是一个递归定义。通过递归将左侧部分排好序后,再递归排好右侧部分的顺序。当左、右两个部分各数据排序完成后,整个数组的排序也就完成了。
快排核心代码:
void qsort(int l,int r){
int x=l;int y=r;
int mid=a[(x+y)/2];
while(x<=y){
while(a[x]<mid) x++;
while(a[y]>mid) y--;
if(x<=y){
swap(a[x],a[y]);//交换
x++;
y--;
}
}
if(l<y)qsort(l,y);
if(x<r)qsort(x,r); //递归
}