快速排序算法模板

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=' ')

上一篇 下一篇

猜你喜欢

热点阅读