2022下半年 Acwing 第一篇:快排模板
Posted 沧夜2021
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2022下半年 Acwing 第一篇:快排模板相关的知识,希望对你有一定的参考价值。
模板内容:
C++ 模板
void quick(int q[],int l,int r)
if(l>=r) return;
int x = q[(l+r+1)>>1],i = l-1,j = r+1;
while(i<j)
do i++;while(q[i]<x);
do j--;while(q[j]>x);
if(i<j) swap(q[i],q[j]);
quick(q,l,i-1);
quick(q,i,r);
python模板
def quick_sort(l,r,data):
if l >= r:
return
i = l - 1
j = r + 1
x = data[(i+j) // 2]
while i < j:
while 1:
i += 1
if data[i] >= x:
break
while 1:
j -= 1
if data[j] <= x:
break
if i < j:
data[i],data[j] = data[j],data[i]
quick_sort(l,j,data)
quick_sort(j+1,r,data)
def main():
l = 0
r = n-1
quick_sort(l,r,data)
if __name__ == "__main__":
n = int(input())
data = [int(x) for x in input().split()]
main()
print(' '.join(list(map(str, data))))
C++ 中的 do...while
可以使用 python中的死循环替换修改:
C++ 格式:
do i++;while(q[i]<x);
python格式
while 1:
i += 1
if data[i] >= x:
break
以上是关于2022下半年 Acwing 第一篇:快排模板的主要内容,如果未能解决你的问题,请参考以下文章
2022下半年 Acwing 第四篇:AcWing 787. 归并排序
2022下半年 Acwing 第四篇:AcWing 787. 归并排序