首页 > 试题广场 >

快速排序

[编程题]快速排序
  • 热度指数:1028 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 128M,其他语言256M
  • 算法知识视频讲解

给定一个长度为n的数组,从小到大输出每个数。


输入描述:
第一行一个整数n数组的长度。
第二行n个元素,表示数组中的数。


输出描述:
从小到大输出每个数
示例1

输入

5 
2 2 5 4 1

输出

1 2 2 4 5
n = int(input())
alist = [int(x) for x in input().split(' ')]

# 不开辟新的空间,使用双指针引用
def fast_sort(alist, first, last):
    left = first
    right = last
    # 停止标志 
    if left >= right:
        return
    mid = alist[first]
    while left < right:
        while (left < right) and (alist[right] >= mid):
            right -= 1
        alist[left]= alist[right]
        while (left < right) and (alist[left] < mid):
            left += 1
        alist[right] = alist[left]
    alist[left] = mid
    fast_sort(alist,first, left-1)
    fast_sort(alist,left+1, last)
    
fast_sort(alist,0,n-1)
c = ' '
print(c.join([str(i) for i in alist]))

发表于 2019-09-24 11:04:57 回复(0)