gpt4 book ai didi

Python 'pointer arithmetic' - 快速排序

转载 作者:行者123 更新时间:2023-11-28 22:49:07 24 4
gpt4 key购买 nike

在惯用的 C 风格中,可以使用两个参数以一种简单的方式实现快速排序:

void quicksort(int inputArray[], int numelems);

我们可以通过指针算法安全地使用两个参数用于以后的 segmentation (即通常所说的分区):

//later on in our quicksort routine...
quicksort(inputArray+last+1, numelems-last-1);

事实上,我之前甚至在 SO 上问过这个问题,因为当时我没有接受过指针算法方面的训练:参见 Passing an array to a function with an odd format - “v+last+1”

基本上,是否有可能在 python 中复制相同的行为,如果可以,怎么做?我注意到列表可以用方括号内的冒号(切片运算符) segmentation ,但是切片运算符从那时起不再传递列表;也就是说,第 1 个元素(第 0 个索引)在两种情况下仍然相同。

最佳答案

如您所知,Python 的切片语法会生成一个副本,因此为了就地操作列表的一个子部分(在 Python 中不是“数组”),您需要同时传递列表和开始-正在讨论的部分的索引和大小(或结束索引),就像在 C 中一样。递归函数的签名类似于:

def quicksort( inputList, numElems, startIndex = 0 ):

递归调用类似于:

quicksort( inputList, numElems-last-1, last+1 )

在整个函数中,您可以将 startIndex 添加到您要访问的任何列表中。

关于Python 'pointer arithmetic' - 快速排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24276755/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com