快速排序及其Python解法

1. 题目

给定一个长度为n的整数,使用快速排序对这个数列按照从小到大进行排序,并将排好顺序的数列按照顺序进行输出。

1.1 输入格式

输入共两行,

第一行包含整数n

第二行包含n个整数(所有整数均在 1∼1091∼109 范围内),表示整个数列。

1.2 输出格式

输出共一行,包含 nn 个整数,表示排好序的数列。

1.3 数据范围

1\leq n\leq 100000

1.4 输入样例:
5
3 1 2 4 5
1.5 输出样例:
1 2 3 4 5

 2. 解题步骤

2.1 读取输入样例
n=int(input())
nums=list(map(int,input().split()))
2.2 建立函数

该函数采用快速排序的方法对数列进行排序

2.1.1 快速排序

        在数列中选取一个值(privot)作为基准,将数列中小于该值(privot)的数放于left变量,大于该值(privot)的数放于right变量。

快速排序及其Python解法_第1张图片

2.2.2 函数代码
#排序函数
def quick_sort(nums):
    if (len(nums)<=1):
        return nums;
    privot =nums[len(nums)//2]#取数列一半长度
    left =[x for x in nums if xprivot]#大于privot
    return quick_sort(left)+mid+quick_sort(right)#返回递归并合并后的数列
 2.3 完整函数
### 输入
n=int(input())
nums = list(map(int,input().split()))

#排序函数
def quick_sort(nums):
    if (len(nums)<=1):
        return nums;
    privot =nums[len(nums)//2]
    left =[x for x in nums if xprivot]
    return quick_sort(left)+mid+quick_sort(right)
    
if __name__=="__main__":
    nums=quick_sort(nums)
    print(" ".join(list(map(str,nums))))

你可能感兴趣的:(Python基础算法,算法,数据结构,python)