python37从零开始学_Python 3.7从头学习的快速排序方法,python37,从零开始,学之

#! /usr/bin/python3

# -*- coding:UTF-8 -*-

#快速排序法

def quick_sort(num_list): #4.主函数调用,

q_sort(num_list,0,len(num_list)-1) #5.调用q_sort()函数,实参 n_list列表,首项序列,最后元素序列传入

def q_sort(num_list,first,last): #6.传入实参给形参

if first < last: #7.条件判断,

split = partition(num_list,first,last)#8.调用函数partition(),传入n_list,首项序列,末项序列实参

q_sort(num_list,first,split - 1) #递推,判断划分元素

q_sort(num_list,split + 1,last) #递推

def partition(num_list,first,last): #9.传入实参给形参

pivot = num_list[first] #10.选取列表中的第一个元素作为划分元素

left_mark = first + 1 #11.左坐标向右移动一格

right_mark = last #右坐标为末项序列

while True:

while num_list[left_mark] <=pivot:#当左坐标元素小于等于划分元素时,左坐标自增1(从左到右序列+1)}|若列表中|

if left_mark == right_mark: #如果左坐标等于右坐标时退出当前while循环

break

left_mark +=1

while num_list[right_mark] > pivot:#当右坐标元素大于划分元素时,右坐标自减1,(从右到左序列-1)

right_mark -= 1

if left_mark < right_mark: #如果左坐标所在元素大于划分元素,右坐标元素小于划分元素,交换两个坐标所指的元素

num_list[left_mark],num_list[right_mark] = num_list[right_mark],num_list[left_mark]

else:

break #左坐标超过了右坐标,退出当前循环

num_list[first],num_list[right_mark] = num_list[right_mark], num_list[first] #交换first处的划分元素和右坐标处的元素

return right_mark

n_list = [1,5,567,9,1,7] #1.生成列表

print(f'before:{n_list}')#2.打印当前序列

quick_sort(n_list)#3.调用quick_sort()函数,传入n_list实参

print(f'After:{n_list}')

print(f'use function sorted:{sorted(n_list)}')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值