快速排序算法模板
2020-03-11 本文已影响0人
yousa_
非常经典,背就完事了!
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# author:ShidongDu time:2020/3/11
'''
给定你一个长度为n的整数数列。
请你使用快速排序对这个数列按照从小到大进行排序。
并将排好序的数列按顺序输出。
输入格式
输入共两行,第一行包含整数 n。
第二行包含 n 个整数(所有整数均在1~109范围内),表示整个数列。
输出格式
输出共一行,包含 n 个整数,表示排好序的数列。
数据范围
1≤n≤100000
输入样例:
5
3 1 2 4 5
输出样例:
1 2 3 4 5
'''
def quick_sort(q, l, r):
if l>=r: return
i = l-1
j = r+1
x = q[(l+r)//2]
while(i<j):
while True:
i+=1
if q[i]>=x: break
while True:
j-=1
if q[j]<=x: break
if i<j:
q[i], q[j] = q[j], q[i]
quick_sort(q, l, j)
quick_sort(q, j+1, r)
if __name__ == '__main__':
n = int(input())
alist = list(map(int, input().split()))
quick_sort(alist, 0, n-1)
for i in alist:
print(i, end=' ')