快速排序的实现
方法一,返回一个新的排序序列
方法二,过渡
方法三,在一个原序列上实现排序
#! /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实现