记录一次快速排序的python实现

快速排序的实现

方法一,返回一个新的排序序列

方法二,过渡

方法三,在一个原序列上实现排序

#! /usr/bin/python3
# -*- coding:utf-8 -*-
# file: kp.py
# author: wangchenxi
# mail: wongchenxi@icloud.com
# brief:
# version: 0.1.00
# Create Time:2020-09-13 15:15:14
# Last Update: 2020-10-21 02:30:03 PM

# 方法一
def quicklysort_new(l):
    if len(l) < 2: return l
    bh = []
    sh = []
    for i in l[1:]:
        if i >= l[0]:bh.append(i)
        if i < l[0]:sh.append(i)
    bh = quicklysort_new(bh)
    sh = quicklysort_new(sh)
    sh.append(l[0])
    sh.extend(bh)
    return sh

# 方法二
def quicklysort_origin_0(nums):
    l = len(nums)
    if l < 2 : return nums
    index = 0
    i = 1
    while i < l:
        if nums[i] < nums[index] and i > index or nums[i] > nums[index] and i < index:
            nums[index], nums[i] = nums[i], nums[index]
            index, i = i, index
        i += 1
    nums[0:index] = quicklysort_origin_0(nums[0:index])
    nums[index+1:] = quicklysort_origin_0(nums[index+1:])
    return nums

# 方法三
def quicklysort_origin_1(nums, start=0, end=None):
    l = len(nums[start:end])
    if l < 2 : return nums
    index = start
    i = start + 1
    l += index
    while i < l:
        if nums[i] < nums[index] and i > index or nums[i] > nums[index] and i < index:
            nums[index], nums[i] = nums[i], nums[index]
            index, i = i, index
        i += 1
    quicklysort_origin_1(nums, 0, index)
    quicklysort_origin_1(nums, index+1, end)
    return nums

l = [ 2,1,3,5,6,4,9,12,7,11 ]
print('origin list is :', l)
print('quicklysort_new(l):', quicklysort_new(l))
print('after quicklysort_new(l), the origin list is :', l)

l = [ 2,1,3,5,6,4,9,12,7,11 ]
print('origin list is :', l)
print('quicklysort_origin_0(l):', quicklysort_origin_0(l))
print('after quicklysort_origin_0(l), the origin list is :', l)

l = [ 2,1,3,5,6,4,9,12,7,11 ]
print('origin list is :', l)
print('quicklysort_origin_1(l):', quicklysort_origin_1(l))
print('after quicklysort_origin_1(l), the origin list is :', l)

版权声明:除特别注明外,本站所有文章均为王晨曦个人站点原创

转载请注明:出处来自王晨曦个人站点 » 记录一次快速排序的python实现

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注