要求将算法1-6设计为3. 3. 4节定义的顺序表Dy
要求将算法1-6设计为3. 3. 4节定义的顺序表DynamicArrayList类的方法。
3.设计算法,将整数顺序表所有元素划分为两部分,其中前面部分的元素都小于等于x,后面部分的元素都大于x.
答案
class DynamicArrayList: def __init__(self): self.data = [] def partition(self, x): """划分顺序表:前半 x,原地操作""" n = len(self.data) i = 0 j = n - 1 # 双指针,从两端向中间靠拢 while i < j: # i向后找大于x的元素 while i < j and self.data[i] <= x: i += 1 # j向前找小于等于x的元素 while i < j and self.data[j] > x: j -= 1 # 交换 if i < j: self.data[i], self.data[j] = self.data[j], self.data[i]